【发布时间】:2018-09-29 17:15:11
【问题描述】:
我正在尝试在嵌套在对象内的数组中添加一个对象。以下是我的结构
{
id:'1',
name:'test',
contents:[
{fruit:'banana'}
{fruit:'apple'}
]
}
现在我只是想用{fruit:'pear'} 更新内容。
我正在使用react-redux-boiler 盘子。我在尝试更新内容时遇到问题。
这是我尝试过的:
const initialState = fromJS({
data: {
content: []
}
});
function projectReducer(state = initialState, action) {
switch (action.type) {
case LOAD_DATA:
return state
.set('loading', true)
.set('error', false)
.setIn(['data', 'contents'], false);
case LOAD_DATA_SUCCESS:
return state
.setIn(['data', 'contents'], action.data)
.set('loading', false);
case ADD_CONTENT:
return state
.set('loading', true)
.set('error', false)
// return return update(state[state.set(['data'],data)
case ADD_CONTENT_SUCCESS:
console.log('addContentSuccess');
return state
.updateIn(['data','contents'],list=>list.push({fruit:'pear'})) //<<<<<THis is failing
.set('loading', false)
.set('error', false)
break;
default:
return state;
}
}
我得到的错误是push is not a function,这是正确的,因为 list 是整个对象,而不是 list.contents。
非常感谢任何建议或帮助或解决方法!提前致谢!
【问题讨论】:
-
我猜
LOAD_DATA_SUCCESS之后的内容不是List。将其更改为.setIn(['data', 'contents'], List(action.data))
标签: reactjs redux immutable.js react-boilerplate