Reactjs 调度操作不会';不能到达它的根部

Reactjs 调度操作不会';不能到达它的根部,reactjs,redux,Reactjs,Redux,这是我的根减速器的外观: import {combineReducers} from 'redux' const initialState = { isAuthenticated: false, user: {} } function test(state=initialState, action) { switch(action.type) { case 'TEST_DISPATCH' : return { ...stat

这是我的根减速器的外观:

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
的某个地方,我有一个动作创建者,名为:
这个.props.registerUser(一些有效负载)

看起来是这样的:

export function registerUser(userData) {

    return {
        type: 'TEST_DISPATCH',
        payload: userData
    }
}
export function registerUser(userData) {

    return {
        type: 'TEST_DISPATCH',
        payload: userData
    }
}
当我调用它时,它会被调用,但是上面的根减缩器中的
函数测试
不会被调用

这是我的
mapDispatchProps

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

}
actions
是一个导入的文件,看起来如下所示:

export function registerUser(userData) {

    return {
        type: 'TEST_DISPATCH',
        payload: userData
    }
}
export function registerUser(userData) {

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

使用
createStore()
创建存储时,请确保传递
rootReducer
,如下所示:

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

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

export default store;
如果将
rootReducer
传递给
createStore()
的第一个参数,如
()=>rootReducer
,则将永远不会命中reducer
测试
或任何其他reducer,因为它需要是一个直接返回下一个状态树的函数

这是一个正在实施的计划


希望这有帮助

你能分享你的
mapDispatchToProps()
,你可能不是真正的
DispatchToprops
操作创建者吗?@AlexanderStaroselsky是的,我把它添加到了我的帖子中。我创建了一个工作程序,你的代码似乎正在工作。在
测试中,reducer在调度
registerUser()
时受到攻击。是否确实要将
rootReducer
添加到
createStore()
?是否确实要正确导入传递给
bindActionCreators
操作,例如
import*作为来自“/some/path/”的操作?那是我的错。。我不小心把它转到了商店
()=>rootReducer
,而不是
rootReducer
,不知道为什么。谢谢你指出!(您可以将其作为答案发布,我会接受)另外,请注意,您可以将
mapspatch
声明简化为对象。有关详细信息,请参见我们的新文档页面。