Redux Store:进入UI的数据是什么?

时间:2016-12-22 07:34:10

标签: redux

通常的做法是分别为数据和ui分别存储,例如

  store
  |
  +--- data
  |    |
  |    + foo.reducer.ts
  |    + ...
  |
  +--- ui
       |
       + bar.reducer.ts
       + ...

我想知道如何从ui讲述数据,似乎没有明显的区别。例如,我可能想要存储我的侧边栏的状态(打开,浮动,固定等),这显然会进入ui。然后有些应用程序栏标题似乎也是一个纯粹的UI问题,尽管它们与视图中显示的数据有某种关系。

接下来,我可能有一个对象列表(例如联系人)可供选择,我想跟踪哪一个被选中等等。虽然这仍然与UI状态有关,但这些对象来自数据存储我可能想要更改所选项目(例如,选择一个联系人,弹出一个对话框并编辑该联系人的姓名)。

我可以遵循任何严格的规则或指南,还是留给我自己的设备?

2 个答案:

答案 0 :(得分:1)

我甚至不愿意区分两者。从变量名中可以清楚地看到它。

contacts

selectedContact

isLoading

stdClass Object ( [GetReceiveMessagesResult] => stdClass Object ( [Messages] => Array ( [0] => stdClass Object ( [MessageID] => 63012240 [RecipientNumber] => 30006708212212 [SenderNumber] => 09379580052 [Body] => Esm200aliaranbeigi [ReceiveDate] => 1482389480 ) [1] => stdClass Object ( [MessageID] => 63012231 [RecipientNumber] => 30006708212212 [SenderNumber] => 09379580052 [Body] => Esp243محسن قائدی [ReceiveDate] => 1482389454 ) ) ) )

答案 1 :(得分:1)

在Redux应用中的商店与用户界面中放置状态

这是一个主观问题,很难回答。但是,您可以遵循一些指导原则。经验是这个主题的最佳老师。说完最好的做法是:

在Redux商店中保留尽可能多的数据,除非这样做不方便

*应用程序中的组件共享的全局数据属于或以复杂的方式变异属于商店。由于您的应用中的大部分州都符合此条件,因此大多数属于商店。

遵循本指南并努力将所有申请状态保留在您的商店中,您将坚持Redux的single source of truth原则。这个原则认为

  

整个应用程序的状态存储在对象树中   一家商店。

全局或可以复杂方式变异的数据应该进入 state 。如果数据被UI的多个部分使用,那么它就是全局性的。

只对一个不会以复杂的方式变异的小部分的数据可以进入ui

Ephemeral 仅与UI的隔离部分相关的数据,例如是否切换UI的某些部分可以进入用户界面。

相关问题