【发布时间】:2019-11-02 06:37:19
【问题描述】:
我正在使用带有 React 的 redux 来管理状态,但是当我从一个动作创建者调用两个调度函数时,它从第一次调度返回状态,但在另一个调度调用之后无法获取更新状态。
我尝试从不同的 reducer 调用 dispatch 并尝试在 API 调用后调用。
这是我的行动。
export const setLoader = (loader) => dispatch => {
dispatch({ type: SET_LOADER, payload: loader });
};
export const fetchCategory = (setLoader) => async dispatch => {
setLoader(true);
try {
const instance = axios.create();
instance.defaults.headers.common['Authorization'] = AUTHORIZATION_TOKEN;
const response = await instance.get(API_PATHS.SERVICE_CATEGORY_API);
dispatch({ type: FETCH_CATEGORY, payload: response.data });
} catch (e) {
setLoader(false);
}
};
在这里我定义了减速器:
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case FETCH_CATEGORY:
return { ...state, categoryList: action.payload };
case SET_LOADER:
return { ...state, isLoading: action.payload };
default:
return state;
}
};
这里我的组件与 redux 连接:
const mapStateToProps = state => {
return ({
categoryList: state.locator.categoryList
});
}
export default connect(
mapStateToProps,
{ fetchCategory, setLoader }
)(ServiceLocator);
我希望输出返回更新后的 categoryList,但实际上它返回的是一个空白数组。
【问题讨论】:
标签: reactjs redux react-redux dispatch