Я пытаюсь создать редуктор без выгоды ES6.Это старое PHP-приложение без процесса сборки, которое можно было бы использовать для переноса.
Я инициализирую состояние:
let defaultState = {
accountTypes: {
personal: {
selected: false,
checking: {
selected: false
},
savings: {
selected: false
}
},
business: {
selected: false,
checking: {
selected: false
},
savings: {
selected: false
}
}
}
};
Вот редуктор, а затем хранилище 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: {…}}
// }
Вы можете видеть, что состояние не обновляется с полезной нагрузкой действия.