如果未在初始状态下预定义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进行循环。
如何正确执行此操作?
答案 0 :(得分:0)
从您提供的代码来看,您似乎没有从减速器返回任何内容。假设您使用的是immutablejs,setIn()
返回状态的副本。您的代码当前正在丢弃该值(不使用它)。您可能想退回该副本。试试这个:
case BOOKMARK:
return state.setIn(['search', 'data', 'bookmark'], action.payload.total)
唯一的区别是return
关键字。