react es6 中变量数组 定义在什么位置?
let arr0 = [7,8,9]
class WatchStore extends Component {
constructor(props) {
super(props);
this.state = {
arr: [4,5,6]
}
}
this.arr2 = [1,2,3]
}
上面三个数组定义的方法,该用哪种方法?
数组数据不需要渲染的,只做暂时缓存对比新数据使用
let arr0 = [7,8,9]
class WatchStore extends Component {
constructor(props) {
super(props);
this.state = {
arr: [4,5,6]
}
}
this.arr2 = [1,2,3]
}
上面三个数组定义的方法,该用哪种方法?
数组数据不需要渲染的,只做暂时缓存对比新数据使用
谢邀,一直以来我都没考虑过这个问题
1.关于放在state里的常量是不是会发生re-render,我认为是不会的,所以更不会产生diff,react重新渲染的前提是state有更新,也就是调用了setState方法,而且对componentShouldUpdate没做处理的情况下,才会触发re-render,而如果这里用的是常量,那么应该是不会有在代码里进行setState的操作的,所以对性能应该不会有什么影响
2.我理解的state里的数据是要和view关联的,因为react的思想是view=render(state),如果你的数据不需要在view里显示,那么没必要放到state里
首先,因为数组与组件render无关,所以不应该放到组件state里。
其次,数组变量是用于缓存中间变量,属于组件实例对象的私有属性,而不是常量,也不是所有实例对象的共享变量,如果数组放在class外部定义,是会被所有class实例对象所共享的,任何一个实例对象都可以修改这个数组变量。这显然也符合你的需求。
综上,使用this.arr
定义数组最合适。
另外,可以参考我的这篇文章:https://segmentfault.com/a/11...,有介绍Props、State和组件的普通属性的用法。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
谢邀!
感谢 @Getaj 、 @lixuejiang 、@dablwow80 等所有参与问题讨论的朋友!该问题确实是一个好问题,忍不住给作者点个赞!经过一番折腾,我大致说一下我的收获:
参考链接:
https://reactjs.org/docs/reac...
https://reactjs.org/docs/reac...
https://stackoverflow.com/que...