在 Android 应用程序中运行时,我一直在努力解决 React Native 中开关组件的一个奇怪问题。
可以说,我有一个组件,其渲染方法如下所示:
render() {
return (
<View>
<View>
<Text>
Test Title
</Text>
<Switch
value={ this.state.value }
onValueChange={
this.test.bind( this )
}
/>
</View>
</View>
);
}
测试
方法是:
constructor(props){
super(props);
this.state = {
value: true
};
}
test(){
this.setState( {value: !this.state.value})
}
当我在 iOS 应用程序中运行模块时,onValueChange
方法会被调用,一切都会按预期工作,但是,当我在 Android 应用程序中执行相同操作时,当值为更改为假。更重要的是,我不能多次更改该值,即我只能将该值设置为 false,并且之后不允许我将其设置为 true。我可以再次使用开关元素的唯一方法是按住栏,尽管如此,该值永远不会改变(开关组件不会改变其颜色),也不会改变调用的方法。
有人遇到过类似的事情吗?这是 RN 及其 Android Switch 组件的问题吗?
我正在使用:
- react :15.4.1
- react 原生:0.39
***注意 1:当我将 RN 代码放入 Activity 中时,onValueChange 会被调用,但当它位于 Fragment 中时,它会失败。
最佳答案
试试这个。
constructor(props){
super(props);
this.state = {
value: true
};
}
在你的渲染中
render() {
return (
<View>
<Text>
Test Title
</Text>
<Switch
value={ this.state.value }
onValueChange={(value) => this.setState({value})}
/>
</View>
);
}
您可以删除 test()
函数
关于android - React-native:在 Android 中不会调用切换组件 onValueChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454408/