美文网首页
第四章 深入理解组件

第四章 深入理解组件

作者: 留白_汉服vs插画 | 来源:发表于2019-02-13 15:44 被阅读25次

4.1 组件state

4.1.1 如何设计state

组件的state是一个组件的UI呈现的完整状态集合。(UI变化 ⇄ state变化,没有多余的状态和中间计算得到的状态)
举个例子,购物车中,state存了一个商品集合purchaseList:[ ] ,还有一个总价totalCost。这里总价,不需要。因为可以通过商品集合进行计算得到。
主要有两种数据: 用于渲染组件时使用到的数据来源,用作组件UI展现形式的判断依据。
比如:user是用作渲染的数据,display是判断依据

<div> {this.state.diaplay?{this.state.user}:null}</div>

普通属性:除了state和props之外的属性,都是普通属性
比如,一个时间属性,用来定时执行更新时间的操作,这个属性,就是普通属性。直接挂载到this下面就可以了。最简单的判断,render方法中有没有用到这个变量,没有用到,那么就是一个普通属性。

4.1.2 正确修改state

不可以直接修改,必须使用setState进行修改,因为只有这样,组件才会触发render。
有一个点很重要,state的更新是异步的。所以不要依赖当前的state的状态计算下一个状态,因为会把多个状态合并成一个状态。比如连续点击两次按钮,连续调用两次this.setState({ quantity:this.state.quantity+1 }) 在React中合并多次修改为一次。相当于后一次的操作覆盖了前一次操作。最终只增加了1。
这样的需求可以用下面这样的函数完成:
setState((old,new)=>{ }) old表示修改前的状态,new,表示修改后的状态。

state的更新是一个合并的过程,也就是你更新那个状态,只需要在setState中更新就可以了。不需要更新的就不用放进去。在合并的过程中,没有更新的不会合并。

相关文章

网友评论

      本文标题:第四章 深入理解组件

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