Reducer不知道我在反应还原中的状态

时间:2017-08-29 17:19:56

标签: javascript reactjs redux react-redux jsx

我正在尝试编写一个应用程序,用户可以在该应用程序中添加项目。用户键入collection-item的名称,并出现具有此名称的项目。 但是当我发出行动addCollection时:

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

到我的减速机:

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行。我认为reducer不知道我的state.collection

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

const store = createStore(allReducers, initialState)

错误在哪里?

1 个答案:

答案 0 :(得分:3)

您的初始状态为array而不是object 您不能也不应该在数组上使用Object.assign 你可以使用spread operator来改变数组。

请改为尝试:

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

我注意到的另一件事是,在您的初始状态对象中,您将其命名为collections(复数),而缩减器的名称为collection(单数)。
确保它不是拼写错误。