您现在的位置是:网站首页>Javascript编程Javascript编程

React下setState机制的简单介绍

少儿编程网2020-02-15 19:06:20Javascript编程 人已围观 来源:少儿编程 -用户投稿

简介本篇文章给大家带来的内容是关于React下setState机制的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。api解析:setState(updater,[callback])updater:更新数据FUNCTION/OBJECTcallback:更新成功后的回调FUNC

本篇文章给大家带来的内容是关于React下setState机制的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

 Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

api解析: setState(updater, [callback])Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

updater: 更新数据 FUNCTION/OBJECTIno少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
callback: 更新成功后的回调 FUNCTIONIno少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

// updater - Function
this.setState((prevState, props) => {
  return {counter: prevState.counter + props.step};
});

// update - Object
this.setState({quantity: 2})

setState的特点:Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

1.异步:react通常会集齐一批需要更新的组件,然后一次性更新来保证渲染的性能Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
2.浅合并 Objecr.assign()Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

带来的问题与解决Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

在使用setState改变状态之后,立刻通过this.state去拿最新的状态Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
解决: componentDidUpdate或者setState的回调函数里获取Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

// setState回调函数
changeTitle: function (event) {
  this.setState({ title: event.target.value }, () => this.APICallFunction());
},
APICallFunction: function () {
  // Call API with the updated value
}

有一个需求,需要在在onClick里累加两次,使用对象的方法更新,则只会加一次Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
解决: 使用updater functionIno少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

onClick = () => {
    this.setState({ index: this.state.index + 1 });
    this.setState({ index: this.state.index + 1 });
}

// 最后解析为,后面的数据会覆盖前面的更改,所以最终只加了一次.
Object.assign(
  previousState,
  {index: state.index+ 1},
  {index: state.index+ 1},
)

//正确写法
onClick = () => {
    this.setState((prevState, props) => {
      return {quantity: prevState.quantity + 1};
    });
    this.setState((prevState, props) => {
      return {quantity: prevState.quantity + 1};
    });
}

建议:Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

1.不要在render()函数里面写setstate(),除非你自己定制了shouldComponentUpdate方法,要不然会引起无限循环Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
2.不能给state直接赋值,不会引发render eg: this.state.num = 2Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
3.对数组和对象等引用对象操作时,使用返回新对象的方法Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
array: 不要使用push、pop、shift、unshift、splice可使用concat、slice、filter、扩展语法Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
object: Object.assgin/扩展语法Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

setState更新机制Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

如图: pending queue 和 update queueIno少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

1865348912-5bd18d50abc7e_articlex.pngIno少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

以上就是React下setState机制的简单介绍的详细内容,更多请关注少儿编程网其它相关文章!Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

来源:php中文网Ino少儿编程网-Scratch_Python_教程_免费少儿编程学习平台


相关文章:

支持一下 ( )

React下setState机制的简单介绍

      匿名评论
    • 评论
    人参与,条评论
    React下setState机制的简单介绍

客服在线

服务时间

周一至周日 9:00-21:00