我在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的第二个参数——这个回调函数将在状态被改变后执行。