20

dopo l'aggiornamento a 0.26.0-rc versione, questa linea:Reagire' metodo findNodeHandle ha smesso di funzionare

React.findNodeHandle(this.refs.myRef) 

Lanci questo messaggio di errore:

non gestita JS eccezione: _react2.default. findNodeHandle non è una funzione .

Sto importando reagire con questo:

import React from 'react'; 

Documenti still say: "Come sempre, per ottenere un handle nodo nativo per un componente, è possibile utilizzare React.findNodeHandle (componente). "

+0

Versione '0,26-rc' di che cosa? Quali documenti lo dicono? – loganfsmyth

+0

React Native, https://github.com/facebook/react-native – Cherniv

+0

In qualsiasi modo è possibile visualizzare un altro codice? –

risposta

24

Devi importare anche ReactNative.

import ReactNative from 'react-native'; 
... 
ReactNative.findNodeHandle(...) 
33

Ora la funzione può essere utilizzata senza oggetto:

import { 
    ... 
    findNodeHandle, 
    ... 
} from 'react-native'; 

e chiamare direttamente:

findNodeHandle(this.refs[refName]) 
+0

Fantastica, buona idea! – Cherniv

0
import { 
    ... 
    findNodeHandle, 
} from 'react-native'; 

var RCTUIManager = require('NativeModules').UIManager; 

var view = this.refs['yourRef']; // Where view is a ref obtained through <View ref='ref'/> 
RCTUIManager.measure(findNodeHandle(view), (fx, fy, width, height, px, py) => { 
    console.log('Component width is: ' + width) 
    console.log('Component height is: ' + height) 
    console.log('X offset to frame: ' + fx) 
    console.log('Y offset to frame: ' + fy) 
    console.log('X offset to page: ' + px) 
    console.log('Y offset to page: ' + py) 
}) 
Problemi correlati