我正在构建一个 React-Redux 应用,该应用必须从头开始从api加载列表。到目前为止,我已经能够使它使用硬编码列表来初始化状态:
.
reducers/Catalogs.js
我从阅读中知道,减速器不应进行异步调用或调度操作,因此,我使用 redux-sagas 来管理异步调用。
import {
GET_CATALOGS,
SHOW_MESSAGE,
HIDE_MESSAGE,
GET_CATALOGS_SUCCESS
} from 'constants/ActionTypes';
const INIT_STATE = {
loader: false,
alertMessage: '',
showMessage: false,
catalogsList: ['uno', 'dos'] /// Hard coded initialization that must be from an api
};
export default (state=INIT_STATE, action) => {
switch (action.type) {
case GET_CATALOGS_SUCCESS: {
return {
...state,
loader: false,
catalogsList: action.payload
}
}
case SHOW_MESSAGE: {
return {
...state,
alertMessage: action.payload,
showMessage: true,
loader: false
}
}
case HIDE_MESSAGE: {
return {
...state,
alertMessage: '',
showMessage: false,
loader: false
}
}
case GET_CATALOGS: {
return {
...state
}
}
default:
return state;
}
}
sagas/Catalogs.js
问题是我不知道如何使用它来初始化状态,因为这种初始化不是动作的一部分。
答案 0 :(得分:0)
基本上,您需要为主要componentDidMount()
组件创建App
并在其中分发GET_CATALOGS
操作,这应该在挂载应用程序(初始化)和更新存储时请求数据。 / p>