来自服务器的本地更改状态redux数据反应原生

时间:2018-11-27 20:10:33

标签: reactjs react-native redux react-redux immutable.js

如果未在初始状态下预定义Redux状态,则无法更改。 这是我的初始状态

var InitialState = Record({
   ....
   mode: null
   data:[]
})

服务器中有json时,它将位于data中。

数据将包含ID,书签,名称等

我可以从服务器this.props.search.data.bookmark访问数据,但是我无法更新它,我认为它无法找到bookmark状态。 我可以更新mode状态,因为它处于初始状态。

json中的示例数据

{id:1 ,Bookmark:true},
{id:2 ,Bookmark:true},
.....

简而言之 我试图做到这一点 可行

console.log(state.getIn(['search', 'mode]))

但这不起作用,(未定义)

console.log(state.getIn(['search', 'data', 'bookmark']))

如果在设置数据时在减速器有效载荷上添加fromJS,我可以访问它们

case SET_DATA:
      return state.set('data', fromJS(action.payload))

现在工作

console.log(state.getIn(['search', 'data', 'bookmark']))

但是在我的容器上我出错了

  

TypeError:TypeError:TypeError:TypeError:undefined不是对象   (评估“ this.props.search.data.map”)

我不能使用map进行循环。

如何正确执行此操作?

1 个答案:

答案 0 :(得分:0)

从您提供的代码来看,您似乎没有从减速器返回任何内容。假设您使用的是immutablejs,setIn()返回状态的副本。您的代码当前正在丢弃该值(不使用它)。您可能想退回该副本。试试这个:

case BOOKMARK:
   return state.setIn(['search', 'data', 'bookmark'], action.payload.total)

唯一的区别是return关键字。