我想知道,有多少州确实属于商店,而不属于组件?我在某些地方读到了真正所有州都应该住在商店里面的地方。
是否包含真正的组件特定内容,例如输入值(提交前),输入验证,模式是否打开,是否已点击某些内容等?
这里的最佳做法是什么?
答案 0 :(得分:2)
明显的答案:
尽可能将组件特定状态(输入值,模态打开/关闭,点击内容,布局,格式化)保持在组件状态内。
和商店内的应用程序特定状态。其中包括但不限于您与服务器来回发送的内容。
那就是说,这里有很多灰色区域:
我使用的一些经验法则:
答案 1 :(得分:0)
查看特定于该组件的组件的状态。涉及许多组件的应用程序状态属于商店。
答案 2 :(得分:0)
这是值得商榷的。 例如,redux提出了一种模式,其中ALL状态属于商店。就我个人而言,我认为在许多情况下这是不切实际的。当我有任何理由存储例如商店中按钮的状态时,这是非常罕见的。 但有时它可能是有利的。当您的整个应用程序无状态时,测试肯定更容易。
答案 3 :(得分:0)
保持所有 可能对某些应用程序有利。
首先,您应该尝试确定您的应用是否像这样。
但是当然很高兴有一些特定的指南,也许只是一个心理指导,告诉你何时将状态保持在组件内部以及什么时候不要。
我会选择这些指南:
- 这个状态纯粹与UI有关吗?然后你可能不需要把它留在商店里。
- 此状态是共享组件外的任何其他位置吗?如果没有,那就不要把它放在商店里。在组件内部没问题。
- 此状态是否可以保留在URL中?如果是的话,那就不要把它放在商店里;把它放在网址中!它可能是输入或当前打开的选项卡的搜索查询。
所有这些都可能有例外,但总的来说,我认为这与助焊剂应用的原始想法很吻合。
P.S。另外我应该说有很多会谈说你应该(可能)将所有的UI保存在一个不可变的状态树中。这就是redux被引入很多人的方式。我认为你应该明白,虽然这是一个伟大的概念,它允许你如此保存/重播任何用户互动,但它往往不是不必要的,而不是Flux的主要思想。而redux本身是一个很好的助焊剂工具,不会迫使你保持商店中的所有UI状态。