Reactjs 如何使用native base&;在react native中实现开关组件上的on change值;导航5

Reactjs 如何使用native base&;在react native中实现开关组件上的on change值;导航5,reactjs,react-native,Reactjs,React Native,我在更改开关的值时遇到问题,默认状态为boolen:false,因此当我将开关切换为true时,状态将立即变为false。我不知道问题出在哪里。 我阅读了一些文档,我们都使用onValueChange设置了相同的属性 我搞不清楚文件上说的是什么 它提到setstate不能调用 当我们以这种方式定义按钮时,选项中的this变量不是主屏幕实例,因此不能调用setState或其上的任何实例方法。这一点非常重要,因为希望标题中的按钮与标题所属的屏幕交互是非常常见的。那么,我们接下来将看看如何做到这一点

我在更改开关的值时遇到问题,默认状态为boolen:false,因此当我将开关切换为true时,状态将立即变为false。我不知道问题出在哪里。 我阅读了一些文档,我们都使用onValueChange设置了相同的属性

我搞不清楚文件上说的是什么

  • 它提到setstate不能调用
  • 当我们以这种方式定义按钮时,选项中的this变量不是主屏幕实例,因此不能调用setState或其上的任何实例方法。这一点非常重要,因为希望标题中的按钮与标题所属的屏幕交互是非常常见的。那么,我们接下来将看看如何做到这一点

    有没有建议将此开关固定在头灯上

    目标:当我切换开关按钮时,必须更改值本身

    声明:

    switchDriverOnlineValue: false,
    
    导航标题:

          DriverHeader() {
        this.props.navigation.setOptions({
          headerLeft: () => <View style={{ flexDirection: "row", justifyContent: "flex-end", paddingLeft: 20 }}>
            <TouchableOpacity
              onPress={() => this.props.navigation.openDrawer()}
            >
              <Icon type="font-awesome" name="user-circle-o" size={30} color="white" />
            </TouchableOpacity>
          </View>,
    
          headerRight: () => <View style={{ flexDirection: "row", justifyContent: "flex-end" }}>
            <Text adjustsFontSizeToFit numberOfLines={2} style={{ color: '#FFFF', fontSize: 18, fontWeight: 'bold' }}>Online</Text>
            <Switch style={{ marginTop: 0 }} value={this.state.switchDriverOnlineValue} onValueChange={(value) => this.setState({ switchDriverOnlineValue: value })} />
          </View>,
        });
      }
    
    DriverHeader(){
    this.props.navigation.setOptions({
    标题左侧:()=>
    this.props.navigation.openDrawer()}
    >
    ,
    头灯:()=>
    在线 的
    this.setState({switchDriverOnlineValue:value})}/>
    ,
    });
    }
    
    电流输出:

    日志:


    在这里,每次更改开关的值时,您都必须切换switchDriverOnlineValue状态的上一个值,以便添加!设置为上一个值将使其工作

    <Switch style={{ marginTop: 0 }} value={this.state.switchDriverOnlineValue} onValueChange={(value) => this.setState({ switchDriverOnlineValue: !value })} />
    
    this.setState({switchDriverOnlineValue:!value})}/>
    
    在这里,每次更改开关的值时,必须切换switchDriverOnlineValue状态的上一个值,以便添加!设置为上一个值将使其工作

    <Switch style={{ marginTop: 0 }} value={this.state.switchDriverOnlineValue} onValueChange={(value) => this.setState({ switchDriverOnlineValue: !value })} />
    
    this.setState({switchDriverOnlineValue:!value})}/>
    
    这不起作用这不起作用