React中如何更新state
我们知道,React中最重要的概念就是state和props,我们在写每一个组件时,都可以为该组件创建一个state,用以保存当前组件的数据。那么如何去更新state就是一个重要的问题了。
setState
首先我们来看一个React Component初始化的例子:
1 | import React, { Component } from 'react'; |
而当我们要更新state,不能直接赋值修改this.state,而是应该使用this.setState()方法。
但在最近写项目的过程中,我遇到了一个问题,我想实现从服务器异步获取数据,然后在React对收到的数据进行更新state,更新的state再进行处理,同步显示在某个div中。当我这样写的时候,发现视图层迟迟没有更新:
1 | class newComponent extends Component { |
后来上网查阅官方文档,才发现React的setState()可能是异步的。也就是说,当我们用this.setState()更新state时,state可能不会立即更新,React会将多个setState()合并在一起最后调用来提高性能,如果我们想立即使用更新后的state,有两种方法:
setState()接受函数参数,我们可以这样写:
1 | this.setState((prevState, props) => ({ |
这样我们就可以获取之前的state。
还有一种方法,setState()第二个参数接受一个callback:
1 | this.setState({ name }, callback); |
在callback里我们可以对修改后的state进行操作。
这两种方法,都可以保证操作的state是最新值,并且能在render()里展现出来。
本文标题:React中如何更新state
文章作者:flyrk
发布时间:2017-08-04
最后更新:2022-02-25
原始链接:https://flyrk.github.io/2017/08/04/react-setState-update/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
分享