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
声明简化为对象。有关详细信息,请参见我们的新文档页面。