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

鍍金池/ 問答/HTML/ redux、vuex狀態(tài)管理,state是否應(yīng)該盡量放在store中?

redux、vuex狀態(tài)管理,state是否應(yīng)該盡量放在store中?

redux

之前寫react比較多,習(xí)慣將state都放在store中。不管container組件還是UI組件,基本上都沒有自己的state。UI組件純渲染,container組件通過mapStateToProps和mapDispatchToProps控制輸入。似乎也是redux的三大原則之一:

整個應(yīng)用的 state 被儲存在一棵 object tree 中,并且這個 object tree 只存在于唯一一個 store 中。

個人感覺:

  1. store有點太龐大了(其實這也沒啥問題)
  2. 有點麻煩,container組件的state太多(或者說80%+都是私有狀態(tài)),每次都要到reducers中寫一把,然后再到container組件中通過mapStateToProps導(dǎo)入props
const reducers = combineReducers({
    a,
    b,
    c,
})

const mapStateToProps = state => ({
    myC: state.c,
});

vuex

最近在看vuex,似乎vuex中只規(guī)定應(yīng)用層級的狀態(tài)需要放在store中,并說明組件可以擁有自己的state。
但是這樣的話,組件數(shù)據(jù)流似乎又比較難控制,比如this.$emit直接調(diào)用父組件的回調(diào)。

clipboard.png

不知道我有沒有理解錯的地方?大家是如何看待store.state和組件私有狀態(tài)的?

回答
編輯回答
風(fēng)畔

嗯,共享狀態(tài)就放在 vuex 中,不是共享的就不要全局,放在自己單獨的組件中就好了!

2017年10月29日 03:26
編輯回答
愛是癌

封裝組件時它的大部分狀態(tài)肯定是自己管理的

2017年5月8日 20:17
編輯回答
呆萌傻

就我的使用經(jīng)歷而言,將state分成兩種,需要共享的和組件私有的。前者放到store中,后者不用。

后者需要特別說明一下,是僅對組件本身起作用,不影響其他組件的state。

當(dāng)然,我覺得這僅僅是個度的問題,將全部state放到store中統(tǒng)一管理自然是很好,但是對于開發(fā)就不太友好了。而且將一些私有的state也放到store中,帶來的收益幾乎沒有,卻對開發(fā)效率有很大影響。

2017年6月10日 07:04
編輯回答
兔囡囡

我個人使用vue、react,都是將共享狀態(tài)存入store,組件內(nèi)部狀態(tài)放到組件內(nèi)部state中,這樣開發(fā)效率更高,結(jié)構(gòu)也更清晰。

2018年2月18日 14:58
編輯回答
忠妾

這個問題, redux 的文檔里也有提到.

必須將所有 state 都維護(hù)在 Redux 中嗎? 可以用 React 的 setState() 方法嗎?

沒有 “標(biāo)準(zhǔn)”。有些用戶選擇將所有數(shù)據(jù)都在 Redux 中維護(hù),那么在任何時刻,應(yīng)用都是完全有序及可控的。也有人將類似于“下拉菜單是否打開”的非關(guān)鍵或者 UI 狀態(tài),在組件內(nèi)部維護(hù)。適合自己的才是最好的。

使用局部組件狀態(tài)是更好的。作為一名開發(fā)者,應(yīng)該決定使用何種 state 來組裝你的應(yīng)用,每個 state 的生存范圍 是什么。在兩者之間做好平衡,然后就去做吧。

這里有一些將怎樣的數(shù)據(jù)放入 Redux 的經(jīng)驗法則:

應(yīng)用的其他部分是否關(guān)心這個數(shù)據(jù)?
是否需要根據(jù)需要在原始數(shù)據(jù)的基礎(chǔ)上創(chuàng)建衍生數(shù)據(jù)?
相同的數(shù)據(jù)是否被用作驅(qū)動多個組件?
能否將狀態(tài)恢復(fù)到特定時間點(在時光旅行調(diào)試的時候)?
是否要緩存數(shù)據(jù)(比如:數(shù)據(jù)存在的情況下直接去使用它而不是重復(fù)去請求他)?

http://cn.redux.js.org/docs/f...

我 redux 是只存需要全局共享, 需要持久化的狀態(tài).
其他的都讓組件自己內(nèi)部維護(hù).

2017年5月23日 01:55