当我在React Native中将button
定义为:
<Button ref="buttonRef" title="Button" onPress={this.buttonPressed}/>
其onPress
功能为:
buttonPressed(){
this.refs.buttonRef.setNativeProps({color:"#ffffff"});
}
我收到以下错误:
this.refs.buttonRef.setNativeProps不是一个函数。 (在 “this.refs.buttonRef.setNativeProps({ 颜色:“#fffffff” })','this.refs.buttonRef.setNativeProps'未定义)
但是,如果我要定义任何其他类型的组件,例如text input
为
<TextInput ref="userInputRef" value={"this is text"} />
使用该功能更改其道具:
buttonPressed(){
this.refs.textRef.setNativeProps({color:"#ffffff"});
}
一切都变了。
是否有button
组件无法通过setNativeProps
设置其原生道具的原因?
答案 0 :(得分:1)
Button
组件是一个从Touchable
组件创建的简单自定义组件,它没有ref
属性。您可以查看Button
组件here的源代码。
如果您需要更改组件的属性,则应使用其状态值。
<强>示例强>
buttonPressed = () => {
this.setState({color:"#ffffff"});
}
//....
<Button ref="buttonRef" color={this.state.color} title="Button" onPress={this.buttonPressed}/>