为了账号安全,请及时绑定邮箱和手机立即绑定

react 定义变量的问题

react 定义变量的问题

青春有我 2019-03-20 18:14:25
在this.state 定义的变量如果改变会重新render 如果不想让他render 只是改变值怎么写 需要写在组件外面么
查看完整描述

6 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-03-30
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-30
?
慕森王

TA贡献1777条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-03-30
?
守候你守候我

TA贡献1802条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-03-30
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-30
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-30
  • 6 回答
  • 0 关注
  • 2605 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信