Redux-调度操作未达到其根减少器

时间:2018-11-01 16:21:58

标签: reactjs redux

这是我的根减速器的样子:

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
    }
}

当我调用它时,它被调用了,但是上面的Root Reducer中的function test却从未被调用。

我在做什么错了?

编辑:

这是我的mapDispatchProps

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

}

actions是导入的文件,看起来像这样:

export function registerUser(userData) {

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

1 个答案:

答案 0 :(得分:1)

使用createStore()创建商店时,请确保您按照以下方式通过rootReducer

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

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

export default store;

如果您将rootReducer传递给createStore()的第一个参数,例如() => rootReducer,则减速器test或任何其他减速器将永远不会被击中,因为它需要直接返回下一个状态树的功能。

这里是example的动作。

希望有帮助!