Установка начального состояния с использованием следующего обёртывания реагирующего - PullRequest
0 голосов
/ 02 февраля 2019

Я использую следующий пакет реаги-редукс.Как установить начальное состояние?В документации только говорится, что функция withRedux принимает только функцию makeStore в качестве аргумента.Установка значения по умолчанию начального состояния в функции makeStore не работает.

import {createStore} from "redux";
import rootReducer from './reducers';

/**
* @param {object} initialState
* @param {boolean} options.isServer indicates whether it is a server side or client side
* @param {Request} options.req NodeJS Request object (not set when client applies initialState from server)
* @param {Request} options.res NodeJS Request object (not set when client applies initialState from server)
* @param {boolean} options.debug User-defined debug mode param
* @param {string} options.storeKey This key will be used to preserve store in global namespace for safe HMR 
*/
const makeStore = (initialState={hello: "world"}, options) => {
    return createStore(rootReducer, initialState);
};

export default makeStore;
import { combineReducers } from 'redux';
import sessionReducer from './session';
import userReducer from './user';

const rootReducer = combineReducers({
  sessionState: sessionReducer,
  userState: userReducer,
});

export default rootReducer;

1 Ответ

0 голосов
/ 02 февраля 2019

Я бы порекомендовал установить начальное состояние в ваших отдельных редукторах , а не в вашей функции createStore.Попробуйте установить исходное состояние в самих отдельных редукторах, например:

// auth reducer
import * as actionTypes from '../actions/actionTypes';

// INITIAL STATE!
const initState = {
    authError: null,
};

// PASS INITIAL STATE INTO YOUR REDUCER!
const authReducer = (state = initState, action) => {
    switch(action.type) {
        // example actionType
        case actionTypes.LOGIN_SUCCESS: return {...state, authError: null };
        case actionTypes.LOGIN_ERROR: return {...state, authError: 'oops, error!' };
    default: return state;
}

export default authReducer;

Я предполагаю, что ваш rootReducer просто комбинирует другие редукторы, например:

// example root reducer
import authReducer from './authReducer';
import projectReducer from './projectReducer';
import { combineReducers } from 'redux';

const rootReducer = combineReducers({
    auth: authReducer,
    project: projectReducer,
});

export default rootReducer;
...