美文网首页
React组件API——setState

React组件API——setState

作者: 毕安 | 来源:发表于2019-02-19 15:01 被阅读0次

setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。

setState(object nextState[, function callback])

参数说明

nextState:将要设置的新状态,该状态会和当前的state合并
callback:可选参数,回调函数。该函数会在setState设置成功,且组件重新渲染后调用。
功能:合并nextState和当前state,并重新渲染组件。

使用setState有三个注意事项:

1、不要直接更新状态
// wrong
this.state.comment = 'Hello';

// right
this.setState({comment: 'hello'});  

上面直接修改this.state的数据,这样并不会渲染组件,通过下面的代码调用setState函数才是正确的方式。构造函数是唯一能够初始化 this.state 的地方。

2、状态的更新可能是异步的
// wrong
this.setState({
  count: this.state.count +1;
})

// right
this.setState((state) => ({
  count: state.count+1;
}))

// right
this.setState( function(state) {
  return {
    count: state.count+1;
  }
})

为了提高性能,React可能会将多个 setState() 调用合并成一个来调用,所以通过第一种方式可能计数器无法正常工作。解决方法是使得setState()接受一个函数而不是一个对象,下面两种函数调用的方法都是正确的。

3、状态更新合并

setState()调用是对状态更新进行合并,这种合并是浅合并,也就是说 this.setState({comments}) 完整保留了 this.state.posts,但完全替换了 this.state.comments。
而replaceState()调用就是将整个state进行替换操作。

constructor(props) {
    super(props);
    this.state = {
      posts: [],
      comments: []
    };
  }
componentDidMount() {
    fetchComments().then(response => {
      this.setState({
        comments: response.comments
      });
    });
  }

上述代码调用fetchComments()时,即更新了state中的comments字段,而posts保持不变。

相关文章

  • ReactJS_09 React 组件 API

    主要介绍以下7个 React 组件 API方法: 设置状态:setState替换状态:replaceState设置...

  • React组件API——setState

    setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。 参数说明 nextState:...

  • setState()状态更新函数

    理解setState的关键 setState不会立刻改变React组件中state的值; setState通过引发...

  • Component.setState()详解

    setState() API setState()方法主要是用来更新组件状态,让组件重新渲染。 应该将setSta...

  • setState

    React文档对于setState的解释和应用setState()会对组件状态的改变进行排列然后噶欧式React该...

  • 从 setState promise 化的探讨 体会 React

    从 setState 那个众所周知的小秘密说起... 在 React 组件中,调用 this.setState()...

  • react学习笔记--state以及setState

    在react中通过state以及setState() 来控制组件的状态。 state state 是 react ...

  • 2020-03-01

    react setState setState()会对一个组件的state对象安排一次更新;当state改变了,改...

  • React setState

    当组件的 setState 函数被调用之后,会发生什么 ? 在代码中调用setState函数之后,React 会将...

  • react使用问题集

    setState是浅合并 关于react组件无法获取history属性的问题 withRouter高阶组件,提供了...

网友评论

      本文标题:React组件API——setState

      本文链接:https://www.haomeiwen.com/subject/ssaxyqtx.html