这是我的根减速器的样子:
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
}
}
答案 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的动作。
希望有帮助!