无法在函数内部设置状态

时间:2019-05-24 00:44:08

标签: reactjs function react-native state

在调用该函数并将值传递给它之后,我无法设置该函数内部变量的状态。

我不确定我在这里做错了什么,我尝试了很多不同的事情,看了很多不同的示例,但似乎无法使其正常工作。

这里是我正在调用的函数:

_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 个答案:

答案 0 :(得分:2)

我认为您可能遇到的问题是setState实际上是异步的。

From the docs

  

将setState()视为请求而不是立即命令来更新组件。为了获得更好的感知性能,React可能会延迟它,然后在一次通过中更新几个组件。 React不能保证状态更改会立即应用。

setState可以具有第二个参数,该参数是应用更改后的回调。尝试使用下面的代码,看看您是否还有更多运气:

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