react 定义变量的问题

在this.state 定义的变量如果改变会重新render
如果不想让他render 只是改变值怎么写 需要写在组件外面么

阅读 6.3k
6 个回答

改变this.state 页面便会重新渲染。若不想重新渲染,可以将this.state.变量 改成 this.变量做操作;或者是楼上所说,通过shouldComponentUpdate 生命周期强行阻止其渲染。

通过shouldComponentUpdate()是可以达到你的需求。
改变state就是为了render的。你这需求很是奇特。

react的 生命周期中 有一个 shouldComponent Update 你在这个生命周期函数中判断 this.state 中的值 和 前一次的值 不同时 返回 false 就能够阻止 react 再次 render

state改变是会触发re-render的,你这样的需求变量最好别存state。
shouldComponentUpdate()可以在state改变不去render

这个只能在周期里面去限制了,state 执行this.setState 就会执行render方法,如果不想话,可以考虑上述说的在周期里面判断不需要render的条件,shouldComponentUpdate 必须有返回值,不然也会报错,return true 执行render false不执行render。如果觉得麻烦的话可以考虑react 16版本发的命名组件的新的方法,
class Box extends React.PureComponent 他能做一些简单的浅比较。

一般来说不用 this.state 直接挂着 this 上就行。但有时候必须挂一些跟渲染无关的数据在 state 上,比如用到 getDerivedStateFromProps ,这时可以小 hack 在 state 上开辟一个 mutableArea 对象专门用来挂变量。直接修改这个对象的属性不改变它本身,所以不会影响渲染。比实现 shouldComponentUpdate 方便些。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题