我一直在使用React,Redux,Redux-thunk构建应用程序。 在调用动作时,reducer会正确接收有效负载和类型,但不会修改它们。
import EditorActionTypes from './editor.types';
const INITIAL_STATE = {
editorModified: false,
tabs: [
{
name: 'main.js',
active: true
},
{
name: 'setup.js',
active: false
}
]
};
const editorReducer = ( state = INITIAL_STATE, action ) => {
switch (action.payload) {
case EditorActionTypes.SELECT_TAB:
return {
...state,
tabs: [
...state.tabs.map(
(tab, index) => index === action.payload
? tab.active = true
: tab.active = false
)
]
}
default:
return state;
}
};
export default editorReducer;
答案 0 :(得分:3)
开关条件错误, 减速器功能应检查动作。
switch (action.type) {
case EditorActionTypes.SELECT_TAB:
return {
答案 1 :(得分:1)
我认为有问题的部分是:
...state.tabs.map(
(tab, index) => index === action.payload
? tab.active = true
: tab.active = false
)
您没有从map内部的函数返回任何内容。您应该返回标签对象。
...state.tabs.map(
(tab, index) => ({
...tab,
isActive: index === action.payload
}))
正如@Gangadhar Gandi指出的那样,您应该打开action.type,而不是action.payload