反应本机中的分段控件在事件和我的状态中不包含相同的值



我在React Native中有SegmentedControl组件的问题。

<SegmentedControlIOS style={styles.SegmentedControlIOS}
    values={['All', 'Recent']}
    selectedIndex={this.state.selectedIndex}
    onChange={this._handleChangeSegment.bind(this)}
/>
_handleChangeSegment(event) {
    console.log(event.nativeEvent.selectedSegmentIndex, "nativeEvent");
    this.setState({
        isLoading: true,
        selectedIndex: event.nativeEvent.selectedSegmentIndex
    });
    console.log(this.state.selectedIndex, "state");
    this.fetchData();
}

这里的问题是nativeEvent的值。selectedSegmentIndex和selectedIndex状态,在控制台中我有:

默认情况下,在构造函数中selectedIndex状态设置为1(最近)。
当我点击'All' console.log返回

0, 'nativeEvent'
1,"国家"

所以nativeEvent是正确的,但它似乎没有在我的状态更新,我不知道为什么。
你能帮我一下吗?

在fetchData方法中,我检查selectedIndex状态是否为1或0以调用ajax请求,但它不会加载良好的请求,因为状态值不是nativeEvent.selectedSegmentedIndex。

问候。

From https://facebook.github.io/react/docs/component-api.html

setState()不会立即改变它。状态,但会创建待定状态转换。访问。调用后的状态方法可能返回现有值。

因此,

console.log (this.state。selectedIndex, "state")不一定会返回已更改的状态。

如果你需要访问被改变的状态,你可以传递一个回调函数作为setState的第二个参数——这个回调函数将在状态被改变后执行。

相关内容

  • 没有找到相关文章

最新更新