Reactjs React-使用action creator将项目重新添加到当前状态

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

我试图在reducer中向当前状态添加更多项,但没有得到期望的结果

我的书减少了

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:[]}