Reactjs React-使用action creator将项目重新添加到当前状态
我试图在reducer中向当前状态添加更多项,但没有得到期望的结果 我的书减少了Reactjs React-使用action creator将项目重新添加到当前状态,reactjs,react-redux,Reactjs,React Redux,我试图在reducer中向当前状态添加更多项,但没有得到期望的结果 我的书减少了 export default function() { return[ {title: 'Abc'}, {title: 'Def'}, {title: 'Ghi'}, {title: 'Jkl'} ] } 添加书本减速机 export default function(state='', action){ switch(action.type){ case 'A
export default function() {
return[
{title: 'Abc'},
{title: 'Def'},
{title: 'Ghi'},
{title: 'Jkl'}
]
}
添加书本减速机
export default function(state='', action){
switch(action.type){
case 'ADD_BOOK':
console.log(action.payload);
return [
...state,
state.books.push({'title':'giki'})
]
default:
return state
}
return state;
}
组合减速器代码
const rootReducer = combineReducers({
books: BooksReducer,
addBook: AddBookReducer
});
export default rootReducer;
最后在容器内
function mapStateToProps(state){
return {
books: state.books
};
}
function mapDispatchToProps(dispatch){
return bindActionCreators({addBook: addBook}, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(BookList);
在控制台中,我正在
Cannot read property 'push' of undefined
有人能帮忙吗。谢谢 我认为这是因为默认状态没有books数组。尝试创建一个默认状态,如
defaultState={books:[]}
,然后使用export default函数(state=defaultState,action){…}
编辑:
进一步看你的问题,整个图书状态是一个数组,所以我认为上面的方法行不通。尝试将reducer中的第7行更改为
状态。push({'title':'giki'})
您需要状态作为一个具有称为books的属性的对象,该属性是一个数组。您可以这样详细说明:状态={books:[]}