在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react es6 中變量數(shù)組 定義在什么位置?

react es6 中變量數(shù)組 定義在什么位置?

react es6 中變量數(shù)組 定義在什么位置?

let arr0 = [7,8,9]
class WatchStore extends Component {
  constructor(props) {
    super(props);
    this.state = {
      arr: [4,5,6]
    }
  }
  this.arr2 = [1,2,3]
}

上面三個(gè)數(shù)組定義的方法,該用哪種方法?
數(shù)組數(shù)據(jù)不需要渲染的,只做暫時(shí)緩存對比新數(shù)據(jù)使用

回答
編輯回答
骨殘心

ES6編碼規(guī)范里的屬性是直接定義在類里的,比如name = "name"

2017年5月11日 13:28
編輯回答
夏木

理論上數(shù)組引用沒變不會影響react組件更新,定義在哪都無所謂
個(gè)人覺得邏輯上放在外面比較好,讓組件數(shù)據(jù)更清晰一點(diǎn)

2017年1月27日 11:13
編輯回答
來守候

謝邀!
感謝 @Getaj 、 @lixuejiang 、@dablwow80 等所有參與問題討論的朋友!該問題確實(shí)是一個(gè)好問題,忍不住給作者點(diǎn)個(gè)贊!經(jīng)過一番折騰,我大致說一下我的收獲:

this.state方式
React 把組件看成是一個(gè)狀態(tài)機(jī)(State Machines)。通過與用戶的交互,實(shí)現(xiàn)不同狀態(tài),然后渲染 UI,讓用戶界面和數(shù)據(jù)保持一致。對于渲染UI,state是十分有用的。反過來講,如果不需要渲染UI,就不應(yīng)該用state,如果state并不是用于渲染UI,雖然在這里使用并沒有錯(cuò),但我們是把state和UI聯(lián)系在一起的,這也算得上語義問題!至于this.state到底會不會觸發(fā)render函數(shù)或diff算法?答案是不會的,除非你調(diào)用setState()和forceUpdate()。
let arr0 和 this.arr2 方法
從變量使用經(jīng)驗(yàn)法則來說,變量應(yīng)該限制在最窄的范圍內(nèi)。如果變量在更大的范圍內(nèi)聲明, 例如let arr0在類之外聲明, 但不在類之外使用, 則就不應(yīng)該在類之外聲明它,這是最好的做法, 因?yàn)樗瞬槐匾姆秶廴?/code>,雖然這種方式在這里一點(diǎn)錯(cuò)沒有, 至少這是一個(gè)良好的編碼習(xí)慣。因此, 選擇在constructor使用this.arr2將是最合適的,這樣寫法表示該變量屬于組件本身, 而不是狀態(tài), 并將其限制在盡可能最窄的范圍內(nèi)。

參考鏈接:
https://reactjs.org/docs/reac...
https://reactjs.org/docs/reac...
https://stackoverflow.com/que...

2017年10月13日 00:31
編輯回答
別傷我

謝邀,一直以來我都沒考慮過這個(gè)問題
1.關(guān)于放在state里的常量是不是會發(fā)生re-render,我認(rèn)為是不會的,所以更不會產(chǎn)生diff,react重新渲染的前提是state有更新,也就是調(diào)用了setState方法,而且對componentShouldUpdate沒做處理的情況下,才會觸發(fā)re-render,而如果這里用的是常量,那么應(yīng)該是不會有在代碼里進(jìn)行setState的操作的,所以對性能應(yīng)該不會有什么影響
2.我理解的state里的數(shù)據(jù)是要和view關(guān)聯(lián)的,因?yàn)閞eact的思想是view=render(state),如果你的數(shù)據(jù)不需要在view里顯示,那么沒必要放到state里

2018年5月14日 12:46
編輯回答
瘋浪

首先,因?yàn)閿?shù)組與組件render無關(guān),所以不應(yīng)該放到組件state里。
其次,數(shù)組變量是用于緩存中間變量,屬于組件實(shí)例對象的私有屬性,而不是常量,也不是所有實(shí)例對象的共享變量,如果數(shù)組放在class外部定義,是會被所有class實(shí)例對象所共享的,任何一個(gè)實(shí)例對象都可以修改這個(gè)數(shù)組變量。這顯然也符合你的需求。
綜上,使用this.arr定義數(shù)組最合適。

另外,可以參考我的這篇文章:https://segmentfault.com/a/11...,有介紹Props、State和組件的普通屬性的用法。

2017年7月25日 21:35