javascript - 如何在 Redux 中只更新 reducer 的一个值?

标签 javascript reactjs redux

下面是我的代码

function customMsg(state, action) {
state = state || {
    person: {
        isFetching: false,
        didInvalidate: false, 
        name: "",
        height: "",
    }
};

switch(action.type) {

    case ACTION_TYPES.PERSON.FETCH_PERSOn_CONTENT_SUCCESS:
        return $.extend({}, state, {
            person.name: action.result.name
        });

    default: 
        return state;
}
}

如何在 Redux 中仅更新 reducer 的一个值? 上面是一个示例,我只想更新人员对象的名称。 我怎样才能做到这一点?

最佳答案

使用 jQuery 扩展,创建一个克隆并设置人名:

var newState = $.extend({}, state);
newState.person.name = action.result.name;
return newState;

否则,要深度克隆对象,您可以使用 lodash cloneDeep() .

另一种方法是使用immutableJS将您的应用程序状态设置为不可变。它是更多的错误“可变”证明,并提供在不可变中设置深层嵌套值的函数。请参阅updateIn :

return state.updateIn(['person', 'name'], () => action.result.name);

试试吧!

关于javascript - 如何在 Redux 中只更新 reducer 的一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170427/

相关文章:

javascript - 有没有办法在 Node.js 中处理 "eat"事件?

javascript - Internet Explorer 中的日期选择器错误

javascript - 如何在表格内制作可拖动的单元格

javascript - 如何查询Firestore以通过字符串字段获取文档(搜索引擎友好的Slug)

javascript - 无法使用 react-redux 更新状态

angularjs - React redux oop 类

javascript - 更改点击事件上的 V 形

reactjs - 重建 ReactJs 组件

javascript - 用于显示导航的 React.js 滚动阈值

reactjs - 将数组项替换为另一项而不改变状态