如何使用异步请求的响应来初始化Redux状态

时间:2019-11-06 04:50:58

标签: reactjs redux react-redux redux-saga

我正在构建一个 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

问题是我不知道如何使用它来初始化状态,因为这种初始化不是动作的一部分。

1 个答案:

答案 0 :(得分:0)

基本上,您需要为主要componentDidMount()组件创建App并在其中分发GET_CATALOGS操作,这应该在挂载应用程序(初始化)和更新存储时请求数据。 / p>