20

Après mise à niveau vers la version 0.26.0 -rc version cette ligne:React » méthode findNodeHandle a cessé de fonctionner

React.findNodeHandle(this.refs.myRef) 

Lancers ce message d'erreur:

JS Exception non gérée: _react2.default. findNodeHandle n'est pas une fonction .

J'importation React avec ceci:

import React from 'react'; 

Docs still say: « Comme toujours, pour obtenir une poignée de noeud natif pour un composant, vous pouvez utiliser React.findNodeHandle (composant). "

+0

Version '0,26 rc' de quoi? Quels docs disent ça? – loganfsmyth

+0

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

+0

De toute façon vous pouvez montrer plus de code? –

Répondre

24

Vous devez également importer ReactNative.

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

Maintenant, la fonction peut être utilisée sans objet:

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

Et appeler directement:

findNodeHandle(this.refs[refName]) 
+0

Cool, bonne idée! – 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) 
})