сохранить состояние по умолчанию с наблюдаемым промежуточным программным обеспечением redux

Я делаю наблюдаемый эпик redux в качестве промежуточного программного обеспечения, а также хочу предоставить состояние по умолчанию для хранения. В некоторых местах я видел applyMiddleware в качестве третьего аргумента функции createStore, тогда как в некоторых местах это был второй аргумент. Как я могу этого добиться?

Я пробую это

const defaultState = {users: []};
const store = createStore(rootReducer, defaultState, applyMiddleWare(middleWare));

Мое основное приложение выглядит так

import { bindActionCreators} from 'redux';
import { connect } from 'react-redux';
import * as actionCreators from '../actions/actionCreator';
import Main from './Main';
import 'rxjs';

function mapStatesToProps(state) {
    return {
        users: state.users,
        error: state.error
    }
}

function mapDispatchToProps(dispatch) {
    return bindActionCreators(actionCreators, dispatch);
}

const App = connect(mapStatesToProps, mapDispatchToProps)(Main);

export default App;

Но это не установка состояния по умолчанию.


person madhur    schedule 13.01.2018    source источник


Ответы (3)


На самом деле вы должны передать состояние по умолчанию в качестве второго аргумента. В коде должна быть ошибка, которой здесь нет.

Вы пробовали воспроизвести проблему за пределами своего приложения? Если у вас есть и вы можете поделиться этим полным кодом для воспроизведения, я могу взглянуть.

person jayphelps    schedule 13.01.2018

Я обнаружил проблему, это произошло из-за несоответствия имени редуктора и свойства состояния по умолчанию,

Мое имя редуктора было User, тогда как я пытался добавить свойство users в состояние по умолчанию. После создания обоих users все работает нормально

person madhur    schedule 14.01.2018

Можете ли вы попробовать использовать "compose" в третьем параметре, как показано ниже?

import { compose } from 'redux';

const defaultState = {users: []};
const store = createStore(rootReducer, defaultState, compose(applyMiddleWare(middleWare)));
person ashokd    schedule 29.01.2018