Redux - отправка действия не достигает его Root Reducer - PullRequest
0 голосов
/ 01 ноября 2018

Вот так выглядит мой корневой редуктор:

import {combineReducers} from 'redux'

const initialState = {
    isAuthenticated: false,
    user: {}
}

function test(state=initialState, action) {

    switch(action.type) {
        case 'TEST_DISPATCH' : return { 
            ...state,
            user: action.payload
        }
        default : return state;
    } 
}

const rootReducer = combineReducers({test})

export default rootReducer

После создания магазина у меня есть:

function mapStateToProps(state) {
  return {
    test: state.test
  }
}

А потом:

const App = withRouter(connect(mapStateToProps, mapDispatchToProps)(Main))

Где-то внутри Main, у меня есть создатель действия, который называется: this.props.registerUser(some_payload).

Это выглядит так:

export function registerUser(userData) {

    return {
        type: 'TEST_DISPATCH',
        payload: userData
    }
}

Когда я вызываю его, он вызывается, но function test из корневого редуктора выше никогда не вызывается.

Что я делаю не так?

EDIT:

Вот мой mapDispatchProps:

function mapDispatchToProps(dispatch) {
  return bindActionCreators(actions, dispatch)

}

actions - импортированный файл, он выглядит так:

export function registerUser(userData) {

    return {
        type: 'TEST_DISPATCH',
        payload: userData
    }
}

1 Ответ

0 голосов
/ 01 ноября 2018

При создании магазина с помощью createStore() убедитесь, что вы передаете свой rootReducer следующим образом:

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

const store = createStore(
  rootReducer
  // ... applyMiddleware(someMiddleware)
);

export default store;

Если вы передадите rootReducer первому аргументу createStore(), как () => rootReducer, редуктор test или любые другие редукторы никогда не будут задействованы, поскольку это должна быть функция, напрямую возвращает следующее дерево состояний.

Вот пример в действии.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...