[英]How much state does really belong in the stores?
我想知道,真正屬於商店而不屬於組件的狀態是多少? 我讀過一些地方,實際上所有州都應該住在商店內。
這是否包括真正特定於組件的東西,例如輸入值(提交之前),輸入驗證,是否打開了模態,是否單擊了某些東西等?
這里的最佳做法是什么?
顯而易見的答案:
盡可能將特定於組件的狀態(輸入值,模式打開/關閉,單擊的內容,布局,格式)保持在組件狀態內。
以及商店內特定於應用的狀態。 其中包括但不限於您與服務器來回發送的內容。
也就是說,這里有很多灰色區域:
我使用的一些經驗法則:
特定於組件的視圖狀態屬於該組件。 與許多組件有關的應用程序狀態屬於商店。
這值得商.。 例如,redux提出了一個模式,其中ALL狀態屬於商店。 我個人認為在許多情況下這是不切實際的。 當我有任何理由要在商店中存儲例如按鈕狀態時,這種情況很少見。 但是有時候這可能是有利的。 當您的整個應用程序都為無狀態時,測試絕對容易。
將所有內容保存在助焊劑存儲中可能對某些應用程序有益。
因此,首先,您應該嘗試確定您的應用是否像這樣。
但是,當然,最好有某種特定的指導,也許只是一個心理指導,告訴您何時在組件內保持狀態,何時不保持狀態。
我會遵循以下指南:
- 這種狀態純粹與UI相關嗎? 然后,您可能不需要將其保存在商店中。
- 該狀態是否在組件之外的其他任何地方共享 ? 如果不是,則不要將其放在商店中。 在組件內部很好。
- 此狀態可以保留在URL中嗎? 如果是這樣,則不要將其放在商店中。 把它放在URL中! 它可能是輸入或當前打開的選項卡的搜索查詢。
所有這些都可能會有例外,但總的來說,我認為這與flux應用程序的原始想法非常吻合。
PS另外,我也應該說,有很多談話都說您應該(可以)將所有UI保留在不可變的狀態樹中。 這就是將redux引入許多人的方式。 我認為您應該理解,盡管這是一個很棒的概念,並且它使您可以保存/重播任何用戶交互,但這通常不是不必要的 ,並且不是Flux的主要思想。 而且redux本身是一個很棒的流量工具, 它不會強迫您將所有UI狀態保留在商店中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.