ReactNative / Switch组件:onValueChange

时间:2016-08-23 15:41:43

标签: react-native

如果有人修改了切换组件,我就试图设置更改事件。方法是设计一个包含多个开关的视图,并允许用户设置每个通知的状态,这些状态最终将在POST api-call中结束。此外,我想从api-call加载初始值。

如何在我的onChangeFunction中访问状态(天气检查/取消选中)?如何使用他们的ID或名称获取元素? (与使用#mySwitch.setValue(true)的HTML / CSS相同?

给定代码:

class Settings extends Component {    
    onChangeFunction(type, props) {
        Alert.alert("changed", "==> " + props.state)
    }    

    render() {
        return (
            <View style={styles.container}>
                <Switch onValueChange={this.onChangeFunction.bind(this, "TASK_CREATED", this.props)} value={this.state} />
            </View>
        );
    }
}

1 个答案:

答案 0 :(得分:5)

propsstate概念之间存在混乱。你可以这样做:

class Settings extends Component {

  state = {
      taskCreated: false,
  };

  onChangeFunction(newState) {
      this.setState(newState, () => Alert.alert("Changed", "==> " + this.state));
  }

  render() {
      return (
        <View style={styles.container}>
            <Switch onValueChange={(value) => this.onChangeFunction({taskCreated: value})}
                    value={this.state.taskCreated}
            />
        </View>
      );
  }
}

请注意this.setState是异步的,因此您可以使用该方法提供的回调安全地读取其值。