2017-08-29 4 views
0

私は、ユーザーがコレクションにアイテムを追加できるアプリケーションを作成しようとしています。ユーザーがコレクションアイテムの名前を入力すると、この名前のアイテムが表示されます。私の減速にリデューサーは私のリアリティーを知らない

export function addCollection(text) { 
    console.log("ACTION ADD COLLECTION FIRED"); 
    return { 
     type: "ADD_COLLECTION", 
     text 
    } 
} 

::私はアクションaddCollectionを派遣するとき はしかし

export default function collection(state = [], action) { 
    switch(action.type) { 
     case "ADD_COLLECTION": 
     return (
      Object.assign({}, state, { 
       collections: [ 
        { 
         name: action.text, 
         src:'' 
        }, 
        ...state.collections 
       ] 
      }) 
     ); 

    } 
    return state 
} 

エラーが発生しました:

TypeError: Cannot convert undefined or null to object 

それは私の減速で6行目に来ます。私は減速材が私の状態を知らないと思います。

var initialState = { 
    collections:[ 
     { 
      name:"Aenean in justo ante", 
      src: '' 
     }, 
     { 
      name:"Aenean in justo ante", 
      src: '' 
     } 
    ], 
    formIsRender: false 
} 

const store = createStore(allReducers, initialState) 

どこが間違いですか?

答えて

3

お客様の初期状態はarrayではなく、objectです。
Object.assignを配列に使用することはできません。
配列を変更しないためにspread operatorを使用することはできます。

は、代わりにこれを試してみてください:

case "ADD_COLLECTION": 
     return [...state, {name: action.text}] 

を私が気づいたもう一つは、あなたの初期状態オブジェクトにあなたがcollections(複数)と命名して、減速機の名前がcollection(単数形)であるということです。
これは誤字ではないことを確認してください。

関連する問題