【问题标题】:Reducer don't know my state in react reduxReducer 不知道我在 react redux 中的状态
【发布时间】:2018-02-07 06:01:00
【问题描述】:

我正在尝试编写一个应用程序,用户可以在其中将项目添加到集合中。用户键入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)

错在哪里?

【问题讨论】:

    标签: javascript reactjs redux react-redux jsx


    【解决方案1】:

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

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-18
      • 2019-05-24
      • 2021-01-08
      • 2017-08-08
      • 2018-08-09
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多