2017-03-20 7 views
0

私は減速機の中の現在の状態にアイテムを追加しようとしていますが、望みの結果は得られません。React - Reduxアクションクリエイターを使用して現在の状態にアイテムを追加します

私の本は

export default function() { 
    return[ 
    {title: 'Abc'}, 
    {title: 'Def'}, 
    {title: 'Ghi'}, 
    {title: 'Jkl'} 
    ] 
} 

が減速コンテナ

function mapStateToProps(state){ 
    return { 
    books: state.books 
    }; 
} 

function mapDispatchToProps(dispatch){ 
    return bindActionCreators({addBook: addBook}, dispatch); 
} 

export default connect(mapStateToProps, mapDispatchToProps)(BookList); 
内部

const rootReducer = combineReducers({ 
    books: BooksReducer, 
    addBook: AddBookReducer 
}); 

export default rootReducer; 

そして最後を組み合わせるための本の減速

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; 
} 

のコードを追加しますレデューサーコンソールで210

誰かが助けることができる、私は

Cannot read property 'push' of undefined 

を取得しています。ありがとう!

答えて

1

デフォルトの状態に書籍配列がないためだと思います。 defaultState = { books: [] }のようなデフォルト状態を作成してみてください、その後export default function(state = defaultState, action){...}

EDITであなたの本の減速を更新: を私は上記動作するとは思わないので、全体の図書状態が配列である、あなたの質問にさらに探しています。減速機の7行目をstate.push({'title':'giki'})

+0

に変更してみてください。私はこの 'state = []'が好きでしたが、機能しませんでした。 –

+0

stateは、配列であるbooksというプロパティを持つオブジェクトである必要があります。 – spirift

+0

あなたはplzを詳しく説明できます –

関連する問題