2016-09-14 115 views
0

我正在从后端接收json数据,并且希望将此数据作为状态存储在我的redux存储中。是否总是像我一样低于这个数据,深入转换为不可变的正确的做法:将json存储为redux状态

reducer(state = initialState, action = {}) 
{ 
    switch(action.type) 
    { 
     case "data_update": 
      return Immutable.fromJS(action.data); 
     default: 
      return state; 
    } 
} 

我工作的代码中做到这一点:

 case "data_update": 
     return Immutable.Map(action.data); 

也许会有一个很好的理由这样做?这可能是什么原因?

回答

0

将数据转换为Map是完全可选的!你可以选择不使用Immutable。因为Redux的核心概念是存储状态并且永不改变它,所以人们开始使用Immutable来冻结状态。如果你完全跳过Immutable,那完全没问题。

深深的数据转换成不可变集合阻止我们意外突变状态这样的 -

reducer(state = initialState, action = {}) 
{ 
    switch(action.type) 
    { 
     case "data_update": 
      state.users = action.payload; 
      break; 
     default: 
      return state; 
    } 
} 
+0

我明白,一个可以做自己喜欢的,但它是有意义的数据做一浅转化成通过Immutable.Map实现不可变集合。对我来说似乎很奇怪。 – Baz

+0

@Baz我们在我们的产品中大量使用Immutable。这说得通! – Mihir

+0

不可变是有道理的,但就我所知,在深度嵌套的json对象上使用Immutable.Map是没有意义的,因为生成的对象不会是不可变的。 – Baz