Я пытаюсь обернуть голову вокруг редукса и саг, и я думаю, что что-то настроил неправильно, и я надеюсь, что кто-то может дать некоторую информацию.
Я создал свой магазин с моим начальным состоянием иЯ отправляю действие, как показано здесь:
const initialState = fromJS({
product: {},
basket: {},
global: {}
});
const reducers = combineReducers({ product, basket, global });
const sagaMiddleware = createSagaMiddleware();
const store = createStore(reducers,
initialState,
applyMiddleware(sagaMiddleware))
initSagas(sagaMiddleware);
store.dispatch(retrieveSiteKeyValues())
return store;
};
Комбинированные редукторы от неизменяемого редукса.
Моя функция саги:
export function* fetchSiteKeyValuesSaga() {
yield take(RETRIEVE_SITE_KEY_VALUES)
const siteKeyValues = yield call(retrieveSiteKeyValues)
yield put(storeSiteKeyValues(siteKeyValues));
}
Моя функция редуктора:
const storeSiteKeyValues = (state, payload) => {
payload.anotherObject = {};
payload.anotherMap = new Map();
const newState = fromJS({ payload })
return newState
// OR return state.merge({ global: { siteKey: action.siteKey } }); ?
}
Когда я опрашиваю объект состояния, size
равен нулю.Я ожидал, что размер будет по крайней мере 3 из-за моего initalState.Когда newState
«создан», размер равен 4. Но когда он возвращается к оператору переключения состояния, размер состояния снова равен нулю:
export default (state, action) => {
switch (action.type) {
case STORE_SITE_KEY_VALUES : {
return storeSiteKeyValues (state, action.payload);
}
default:
return state;
}
}
Я на 90% уверен, что просто создаю дамп по состояниюкак я делаю в функции редуктора, неправильно, и я должен использовать set()
или setIn()
, я подумал, что update()
будет иметь больше смысла, но когда я использую эти методы, состояние всегда пустое или «неопределенное», если я пытаюсьчтобы ввести в консоль .get(x)
.
Когда я проверяю состояние в браузере, оно выглядит следующим образом:
storeState:{
[2],
[2]
[2]
}
Расширяемый массив выглядит так:
0:"product"
1:{anotherObject :{}, anotherMap: map()
size:1
Я ожидаю, что значения, которые были частью полезной нагрузки, будут здесь, а не только новые object
и map
.
Неправильно ли я инициирую свое состояние при создании магазина?Неправильно ли я отношусь к управлению редукциями и государственными делами?