我正在尝试创建一个没有 ES6 优势的减速器。这是一个旧的 PHP 应用程序,没有构建过程可用于转译。
我正在初始化状态:
let defaultState = {
accountTypes: {
personal: {
selected: false,
checking: {
selected: false
},
savings: {
selected: false
}
},
business: {
selected: false,
checking: {
selected: false
},
savings: {
selected: false
}
}
}
};
这是reducer,然后是store init:
function reducer(state, action) {
switch (action.type) {
case 'TOGGLE_ACCOUNT_TYPE':
console.log(state.accountTypes);
// {
// business: {selected: false, checking: {…}, savings: {…}}
// personal: {selected: true}
// }
console.log(action.payload);
// {
// personal: {selected: true}
// }
let blah = Object.assign({}, state, {
accountTypes: Object.assign({}, state.accountTypes, action.payload)
});
console.log(blah.accountTypes);
// {
// business: {selected: false, checking: {…}, savings: {…}}
// personal: {selected: true}
// }
return blah;
default:
return state;
}
}
const store = Redux.createStore(reducer, defaultState);
let state = store.getState();
稍后在 jQuery 中订阅状态document.ready
:
store.subscribe(function () {
console.log(state.accountTypes);
// {
// business: {selected: false, checking: {…}, savings: {…}}
// personal: {selected: false, checking: {…}, savings: {…}}
// }
您可以看到状态未使用操作负载更新。