web-dev-qa-db-fra.com

La méthode React 'findNodeHandle a cessé de fonctionner

Après la mise à niveau vers la version 0.26.0-rc, cette ligne:

React.findNodeHandle(this.refs.myRef)

Lance ce message d'erreur:

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

J'importe Réagir avec ceci:

import React from 'react';

Docs indique toujours : "Comme toujours, vous pouvez utiliser React.findNodeHandle (composant) pour obtenir un descripteur de noeud natif pour un composant."

23
Cherniv

Vous devez également importer ReactNative.

import ReactNative from 'react-native';
...
ReactNative.findNodeHandle(...)
31
Daniel Basedow

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

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

Et appelez-le directement: 

findNodeHandle(this.refs[refName])
42
igor
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)
})
0
jose920405