Выход React Reducer с историей, ошибкой состояния и действия - PullRequest
0 голосов
/ 30 марта 2020

Эй, я посмотрел кучу файлов справки и не могу решить проблему. Большинство предложений используют другие настройки, чем у меня. Основной проблемой, которой нет у других, является функция ВЫХОДА. Можете ли вы предложить другой способ обработки LOGOUT?

Вот мой индекс. js для "комбайновых редукторов":

import { combineReducers } from 'redux';
import { connectRouter } from 'connected-react-router';
import { LOGOUT_USER } from '../constants/index';

/* App Reducer Files */
import app from './app/reducer';
import accountData from './account/reducer';
import employeeData from './employee/reducer';
import locationData from './location/reducer';
import googleData from './google/reducer';
import requestData from './request/reducer';
import menuItemData from './menuItem/reducer';
import orderData from './order/reducer';

/* Public Reducer Files */
import valorData from './valor/reducer';

const appReducer = history => combineReducers({
    router: connectRouter(history),
    app,
    accountData,
    employeeData,
    locationData,
    googleData,
    requestData,
    menuItemData,
    orderData,

    // Public
    valorData,
});

const rootReducer = history => (state, action) => {
    if (action.type === LOGOUT_USER) {
        state = undefined;
    }
    return appReducer(history, state, action);
};

export default rootReducer;

И мой магазин. js:


import { createStore, applyMiddleware, compose } from 'redux';
import thunkMiddleware from 'redux-thunk';
import { createLogger } from 'redux-logger';
import { routerMiddleware } from 'connected-react-router';
import rootReducer from '../services';

import history from '../history';

const debugware = [];
if (process.env.NODE_ENV !== 'production') {
    debugware.push(createLogger({
        collapsed: true,
    }));
}

export default function configureStore(initialState) {
    const store = createStore(
        rootReducer(history),
        initialState,
        compose(
            applyMiddleware(
                routerMiddleware(history),
                thunkMiddleware,
                ...debugware,
            ),
        ),
    );

    if (module.hot) {
        // Enable Webpack hot module replacement for reducers
        module.hot.accept('../services', () => {
            const nextRootReducer = require('../services/index').default;
            store.replaceReducer(nextRootReducer);
        });
    }

    return store;
}

Это работало до того, как я обновил маршрутизатор до новой версии. Опять же, основной проблемой является выход. Если я просто экспортирую appReducer, он работает просто отлично, но не выходит из системы.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Почему вы возвращаете неопределенное состояние? Вместо этого возвращаем

if (action.type === LOGOUT_USER) {
    return{ ...state, user: [] }
}

В основном возвращается и очищает массив как пользователь.

0 голосов
/ 30 марта 2020

WOW. В тот момент, когда я публикую его, я попробую еще одну вещь ...

const rootReducer = history => (state, action) => {
    if (action.type === LOGOUT_USER) {
        state = undefined;
    }
    return appReducer(history)(state, action);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...