javascript - 如何更新 reducer 中对象的 1 个属性?

标签 javascript reactjs redux react-redux

我有一个像这样的 reduxreducer:

const initialState = {
    visitedData:{specialty:false,review:false,reviewUpgrade:false}
}

const myred= (state = initialState, action) => {
    switch (action.type) {
        case 'GO_FOR_IT_SON':
            return Object.assign({}, state, { visitedData: action.data });

        default:
            return state
    }
}

现在我将从我的 reactcomponent 中调用类似的东西:

 store.dispatch({type: 'GO_FOR_IT_SON', data:{review:true} });

或:

 store.dispatch({type: 'GO_FOR_IT_SON', data:{specialty:false} });

因此,这些语句中的每一个都应该将 visitedData 的一个属性设置为 true/false,并保持其他属性不变。 如何将 visitedData 的每个属性设置为 true/false 并保持其他属性不变?

最佳答案

const initialState = {
      visitedData: {
      specialty: false,
      review: false,
      reviewUpgrade: false
    }
}

const myred = (state = initialState, action) => {
    switch (action.type) {
        case 'GO_FOR_IT_SON':
            return {...state, visitedData: {...state.visitedData, action.data}}
        default:
            return state
    }
}

就像你对状态 - Object.assign 所做的那样,你应该对 visitedData 对象做同样的事情,或者使用展开运算符而不是 object.assign

关于javascript - 如何更新 reducer 中对象的 1 个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942386/

相关文章:

css - react Bootstrap 表未对齐的标题列

javascript - Redux connect 函数解释

javascript - React/Redux,链式或 reducer 中的 promise

javascript - 未能在同级 tr(表行)上应用 jquery slice 方法

javascript - $(document).ready() 是在 body 中加载所有脚本文件后调用的吗?

javascript - jquery 函数不调用按钮单击

node.js - 如何在reactJS中初始化未知长度的数组状态?

javascript - 使用水线标准来验证对象?

javascript - 搜索栏以在 React 中过滤表结果并超时

javascript - Redux Dev Tools Chrome 扩展 Immutable.js 导致错误