最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

React下setState机制的简单介绍

来源:动视网 责编:小采 时间:2020-11-27 19:29:27
文档

React下setState机制的简单介绍

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

api解析: setState(updater, [callback])

updater: 更新数据 FUNCTION/OBJECT
callback: 更新成功后的回调 FUNCTION

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

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

setState的特点:

1.异步:react通常会集齐一批需要更新的组件,然后一次性更新来保证渲染的性能
2.浅合并 Objecr.assign()

带来的问题与解决

在使用setState改变状态之后,立刻通过this.state去拿最新的状态
解决: componentDidUpdate或者setState的回调函数里获取

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

有一个需求,需要在在onClick里累加两次,使用对象的方法更新,则只会加一次
解决: 使用updater function

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};
 });
}

建议:

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

setState更新机制

如图: pending queue 和 update queue

文档

React下setState机制的简单介绍

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

最新推荐

猜你喜欢

热门推荐

专题
Top