如何从Epic Redux-Observable中设置componentDidmount方法中的数据



我是Redux-Observable的新手。我有一个史诗般的功能,该功能请求API调用并删除新的成功措施。在我的React视图中获取数据的干净方法是什么?在我的componentDidmount方法中,我称为getusers redux操作。我想在componentdidmount中设置状态,但它只会运行一次,并且不会等待承诺史诗。

const getUsersEpic = action$ =>
    action$.ofType(GET_USERS)
        .mergeMap( action =>
            Observable.fromPromise(
                axios({
                    method: 'get',
                    url: API_USERS,
                    headers : getHeaders().toObject()
                })
            )
        )
        .flatMap((response) => {
            if(response.status == 200) {
                return [{
                    type: GET_USERS_SUCCESS,
                    data: response.data,
                    status: response.status
                }]
            }
            else {
                return [{
                    type: GET_USERS_ERROR,
                    message: 'error',
                    status: response.status
                }]
            }
        })
        .catch( error => {
            // console.log('error', error)
            return setResponseError(error,  GET_USERS_ERROR);
        });

您在 componentDidMount()中派遣一个动作,该操作由 redux-observable拦截并用于进行ajax调用。结果,您将来在某个时候将GET_USERS_SUCCESSGET_USERS_ERROR操作派发到Redux。通常,没有办法在组件中等待这些动作。我认为这是一个良好的限制,因为这限制了组件中的异步处理,这在许多方面都可以引入错误。

您需要做的是在还原器中设置默认状态,该状态随后通过请求响应更新,并将其作为支架将其传递给您的组件。

另外,请通过一位Redux-Observable作者查看此答案。

顺便说一句,有什么原因是您axios而不是 AjaxObservable

相关内容

  • 没有找到相关文章

最新更新