Mam reduktor iw celu obliczenia nowego stanu potrzebuję danych z akcji, a także danych z części stanu, która nie jest zarządzana przez ten reduktor. W szczególności w reduktorze, który pokażę poniżej, potrzebuję dostępu do pola accountDetails.stateOfResidenceId
.Jak uzyskać dostęp do stanu wewnątrz reduktora Redux?
initialState.js:
export default {
accountDetails: {
stateOfResidenceId: '',
accountType: '',
accountNumber: '',
product: ''
},
forms: {
blueprints: [
]
}
};
formsReducer.js:
import * as types from '../constants/actionTypes';
import objectAssign from 'object-assign';
import initialState from './initialState';
import formsHelper from '../utils/FormsHelper';
export default function formsReducer(state = initialState.forms, action) {
switch (action.type) {
case types.UPDATE_PRODUCT: {
//I NEED accountDetails.stateOfResidenceId HERE
console.log(state);
const formBlueprints = formsHelper.getFormsByProductId(action.product.id);
return objectAssign({}, state, {blueprints: formBlueprints});
}
default:
return state;
}
}
index.js (reduktor główny):
import { combineReducers } from 'redux';
import accountDetails from './accountDetailsReducer';
import forms from './formsReducer';
const rootReducer = combineReducers({
accountDetails,
forms
});
export default rootReducer;
Jak mogę uzyskać dostęp do tego pola?
[Aktualizacja stanu w oparciu o stan aplikacji jest anty -pattern] (https://stackoverflow.com/questions/35851837/redux-and-within-a-reducer-accessing-a-different-reducer-how) – Igorsvee
To stwierdzenie nie ma żadnego sensu. Cały punkt funkcji reduktora polega na tym, że podejmujesz decyzje w oparciu o * bieżący stan * i akcję. – markerikson