avatar

目录
揭密React setState

注意点:

setState(updater, callback)这个方法是用来告诉react组件数据有更新,有可能需要重新渲染。它是异步的,react通常会集齐一批需要更新的组件,然后一次性更新来保证渲染的性能。所以在使用setState改变状态之后,立刻通过this.state去拿最新的状态往往是拿不到的。

使用要点:

  1. 所以第一个使用要点就是:如果你需要基于最新的state做业务的话,可以在componentDidUpdate或者setState的回调函数里获取。
    javascript
    1
    2
    3
    4
    5
    6
    7
    // setState回调函数
    changeTitle: function (event) {
    this.setState({ title: event.target.value }, () => this.APICallFunction());
    },
    APICallFunction: function () {
    // Call API with the updated value
    }
  2. 设想有一个需求,需要在在onClick里累加两次,如下
    javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // wrong
    onClick = () => {
    this.setState({ index: this.state.index + 1 });
    this.setState({ index: this.state.index + 1 });
    }

    // correct
    // 如果是下一个state依赖前一个state的话,推荐给setState传function
    onClick = () => {
    this.setState((prevState, props) => {
    return {quantity: prevState.quantity + 1};
    });
    this.setState((prevState, props) => {
    return {quantity: prevState.quantity + 1};
    });
    }
文章作者: 盛顺炎
文章链接: https://www.shengshunyan.xyz/2018/09/19/%E6%8F%AD%E5%AF%86React%20setState/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 果实的技术分享
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论