javascript - Redux reducer 获取字符串而不是对象
问题描述
我正在尝试使用 redux 更新我的状态,但由于某种原因,reducer 只获取一个字符串而不是一个对象。
// action
const switchTab = (activeTab) => { return { type: SWITCH_TAB, activeTab } }
//reducer
const appUIManagement = (state = initialState, action) => {
switch(action.type) {
case SWITCH_TAB:
return Object.assign({}, state, {activeTab: action.activeTab});
default:
return state;
}
}
假设我的初始状态是
{activeTab: 'lines'}
现在,当我发送一个动作时:
{ type:SWITCH_TAB, { activeTab: 'favorites' } },
我的减速器的状态参数只是“行”而不是整个对象,因此我的响应看起来像
{
activeTab: {
'0': 'l',
'1': 'i',
'2': 'n',
'3': 'e',
'4': 's',
activeTab: 'favorites'
}
}
我做错了什么或者我对redux没有什么了解?谢谢
解决方案
您正在将字符串传递action.activeTab
给Object.assign
const state = {};
const action = { type: 'SWITCH_TAB', activeTab: 'lines' };
const newState = Object.assign({}, state, action.activeTab);
console.log(newState);
但是,Object.assign
期望对象作为其参数,因此您应该传递整个操作,或者更好的是您需要的操作部分:
const state = {};
const action = { type: 'SWITCH_TAB', activeTab: 'lines' };
const newState = Object.assign({}, state, { activeTab: action.activeTab })
console.log(newState);
推荐阅读
- java - Remove TableView entries when status change
- javascript - 如何为画板使用 Adobe Illustrator 脚本?
- java - 具有多态性的通用数组
- regex - 正则表达式仅在前面没有 D 时以任何顺序捕获行 A、B 或 C
- f# - 如何使用 Option.map 做空条件?F#如何获取空对象的属性?漏洞?
- javascript - CryptoJS 解码返回值
- google-apps-script - Google 表单 - 采用(长)现有表单并使用脚本添加基于答案的页面导航
- java - 找不到主类
- java - 如何通过两个键使用 Jolt 聚合 JSON 数据?
- feathersjs - FeathersJS - 确保只有注册的用户才能获得“用户创建”