@kirillleogky

Как в одном редюсере переписать значение другого?

Есть action:
export const SET_SSR_PROPS = 'SET_SSR_PROPS';

export const setSsrProps = response => ({
    type: SET_SSR_PROPS,
    payload: response
});


И reducer:
import { createReducer } from '../storeUtils';
import { SET_SSR_PROPS } from '../actions/ssrActions';

const initialState = {};

const setSsrProps = (state, action) => ({
    ...action.payload
});

export default createReducer(initialState, {
    [SET_SSR_PROPS]: setSsrProps
});


Мой index.js в reducer:
import { combineReducers } from 'redux';
import orderData from './orderReducer';
import prevSsrProps from './ssrReducer';

const rootReducer = combineReducers({
    orderData,
    prevSsrProps
});

export default rootReducer;


Вопрос - Как мне при вызове этого action (setSsrProps) заменить в редаксе поле с данными от orderData?



Чтобы к примеру:
console.log(store.orderData);  <--------- данные из редюсера orderData   orderData !== this.props.prevSsrProps
setSsrProps(this.props.prevSsrProps);     <----------заменит прошлые даннные в store.orderData на this.props.prevSsrProps
console.log(store.orderData);  <--------- данные из редюсера orderData   orderData === this.props.prevSsrProps
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
Обрабатывать этот экшен в orderData и делать там что нужно. А редьюсер prevSsrProps вообще не нужен.

У стора нет метода setState, то, что вы хотите, одним действием сделать невозможно. Но вы можете в каждом своём редьюсере обрабатывать экшен и заменять часть стора, за которую он отвечает.
Ну либо через костыли и велосипеды пересоздавать весть стор вообще, но это плохое решение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы