Невозможно установить состояние внутри функции - PullRequest
0 голосов
/ 24 мая 2019

У меня проблемы с возможностью установить состояние переменной внутри функции после вызова этой функции и передачи ей значения.

Я не уверен, что делаю неправильноздесь я пробовал много разных вещей и смотрел на множество разных примеров, но не могу заставить его работать.

Вот функция, которую я вызываю:

_onSectionListPress = function(id) {
            const tempID = id;
            this.setState({ jobId: tempID });
            alert(this.state.jobId);
        };

И вот откуда я вызываю функцию и передаю ей значение:

<FlatList
          style={styles.jobs}
          data={this.state.data}
          renderItem={({ item }) => (
            <TouchableOpacity
                 onPress={this._onSectionListPress.bind(this, item.id)}
            >
               <ListItem 
                   title={`${item.text}`}
               />
             </TouchableOpacity>
           )}
            keyExtractor={extractKey}                        
/>

Я также пытался не использовать

onPress={ this._onSectionListPress(item.id) }

Любая помощь очень ценится

1 Ответ

2 голосов
/ 24 мая 2019

Я думаю, что вы можете столкнуться с тем, что setState на самом деле асинхронный.

Из документов :

Подумайте о setState ()как запрос, а не немедленная команда для обновления компонента.Для лучшего восприятия производительности React может задержать ее, а затем обновить несколько компонентов за один проход.React не гарантирует, что изменения состояния будут применены немедленно.

setState может иметь второй параметр, который является обратным вызовом после применения изменения.Попробуйте использовать код ниже и посмотрите, повезет ли вам:

_onSectionListPress = function(id) {
  this.setState({ jobId: id}, () => alert(this.state.jobId));
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...