Сегментированный элемент управления в реагировать нативно не содержит одинаковое значение в событии и мое состояние
У меня проблема с компонентом SegmentedControl в React Native.
<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 (Недавние).
Когда я нажимаю "Все", консоль возвращается
0, nativeEvent
1, "состояние"
Итак, nativeEvent правильно, но, похоже, не обновляется в моем состоянии, и я не знаю почему.
Не могли бы вы помочь мне с этим?
В методе fetchData я проверяю, является ли состояние selectedIndex 1 или 0 для вызова ajax-запроса, но он не загружает хороший запрос, поскольку значение состояния не является nativeEvent.selectedSegmentedIndex.
С уважением.
1 ответ
С https://facebook.github.io/react/docs/component-api.html
setState () не изменяет немедленно this.state, но создает ожидающий переход в состояние. Доступ к this.state после вызова этого метода может потенциально вернуть существующее значение.
Следовательно, console.log(this.state.selectedIndex, "state") не обязательно возвращает мутированное состояние.
Если вам нужен доступ к измененному состоянию, вы можете передать функцию обратного вызова в качестве второго аргумента setState - эта функция обратного вызова будет выполнена после того, как состояние было изменено.