web-dev-qa-db-ja.com

ReactのfindNodeHandleメソッドが機能しなくなりました

0.26.0-rcバージョンへのアップグレード後、次の行:

React.findNodeHandle(this.refs.myRef)

このエラーメッセージをスローします。

未処理のJS例外:_react2.default.findNodeHandleは関数ではありません。

私はReactでこれをインポートしています:

import React from 'react';

ドキュメント それでも "いつものように、コンポーネントのネイティブノードハンドルを取得するには、React.findNodeHandle(component)を使用できます。"

23
Cherniv

ReactNativeもインポートする必要があります。

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

これで、関数はオブジェクトなしで使用できます。

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

そして、直接呼び出します:

findNodeHandle(this.refs[refName])
47
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)
})
1
jose920405