(直接更改state的值会出bug)
直接修改this.state的值,虽然改变了组件的内部状态,但是并没有驱动组件进行重新渲染,既然组件没有重新渲染,页面上的UI这个this.state当然不会有任何变化...函数应该传递一个函数而不是对象,这样可以保证每次调用的状态值都是最新的
至于为什么React不选择同步更新this.state
这是因为React是有意这么设计的,做异步等待,在constructor构造器函数执行完后...,在执行render函数,直到所有组件的事件处理函数内调用setState函数完成之后,避免不必要的重新渲染来提升性能
你可以能会想,React不能对this.state进行立马更新,而不对组件进行重新渲染呢...如果该组件只是用于UI渲染,数组展示,并无复杂的页面逻辑交互,那么应该让组件的数据定义成props,通过外部组件传入,而并非将数据设置到状态当中去
那么究竟什么样的数据属性可以视为状态?...如果是,那么它就不是state
通过state或者props可以计算出的数据:比如一个数组的长度等,那么它就不是state
它是否随着时间的变化而保持不变?