android - React-native:在 Android 中不会调用切换组件 onValueChange

标签 android react-native

在 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/

相关文章:

android - 录制声音时获取分贝值?

android - IllegalStateException fragment 已添加

android - 以编程方式打开 Google 云端硬盘中的文件,而不使用 Drive API

Android ListView 刷新

react-native-paytm 不工作

reactjs - 如何在 React Native 中的 props 更改(通过 redux)时启动动画?

android - Droid 上的 zz_moto_actionbar_bkg.xml 资源错误

node.js - 使用 Expo start 而不是 npm start

reactjs - react native 无限 View 寻呼机

javascript - react native 图像可拖动裁剪