refs不能在react-native中工作

时间:2016-08-11 10:57:16

标签: reactjs react-native

我有一个TextInput,我想在我的函数中引用它。

next() {
        let body = this.refs.body.value
    }

<View>
    <Text>Place the body here</Text>
    <TextInput ref="body" placeholder="Your body goes here..." style={styles.body} placeholderTextColor='green'/>
</View>

但是我收到了这个错误:

  

undefined不是对象(评估'this.refs.body')

ref无法在react-native中工作吗?

3 个答案:

答案 0 :(得分:8)

我认为他们改变了ref的工作方式。现在,ref代替一个字符串,接受一个在特定组件被渲染时被调用的函数 你可以试试像,

next() {
let body = this._textInput.value
}

<View>
    <Text>Place the body here</Text>
    <TextInput ref={component => this._textInput = component} placeholder="Your body goes here..." style={styles.body} placeholderTextColor='green'/>
</View>

https://facebook.github.io/react-native/docs/direct-manipulation.html

或者,您也可以将onChange附加到TextInput,并在单击下一个按钮时记录输入。

编辑:
Ref仍然接受字符串,但它将被弃用。请改用ref中的函数。

答案 1 :(得分:0)

问题可能与您引用尚未安装的元素有关。您确定在componentDidMount或更高版本上参考了它吗?

答案 2 :(得分:0)

这很好用

如果您只想查看ref的属性,请访问console.log(this._textInput)   onFoucus() ......

onFocus(){
  this._textInput.root.focus()
}
<textInput
  ref={component => this._textInput = component}
/>