如何将数据添加到待处理的操作中



我正在使用Axios,Redux和Redux Promise Middleware。

我有以下动作创建者:

return {
        type: 'FETCH_USERS',
        payload: axios.get('http://localhost:8080/users',
            {
                params: {
                    page
                }
            }
        )
    }

在我的FETCH_USERS_PENDING操作的还原器中,我想将请求的URL保存在我的状态。我该怎么做?

您要使用 redux-promise-middleware的" meta"变量。喜欢:

return {
  type: 'FETCH_USERS',
  meta: { url: 'http://localhost:8080/users' },
  payload: axios.get('http://localhost:8080/users', config)
}

您可以在参数中通过它,但是在获取页面之前,这不会返回。这意味着它不会在fetch_users_pending期间传递。

,我很确定您是否将您直接包含在返回对象中(例如Lucas建议的方式),它将被剥离出fetch_users_pending阶段。

这是Redux-Promise-Middleware的Fetch_users_pending阶段:

  /**
   * First, dispatch the pending action. This flux standard action object
   * describes the pending state of a promise and will include any data
   * (for optimistic updates) and/or meta from the original action.
   */
  next({
    type: `${type}_${PENDING}`,
    ...(data !== undefined ? { payload: data } : {}),
    ...(meta !== undefined ? { meta } : {})
  });

您在此阶段可以看到,中间件返回附加的"类型"属性,并检查" data"&"元"属性。如果存在,它们将在动作中传递。

如果要进一步研究,这是Redux-Promise-Middle Warear源代码。

也只需通过操作中的URL:

return {
  type: 'FETCH_USERS',
  url: 'http://localhost:8080/users',
  payload: axios.get('http://localhost:8080/users', {
    params: {
      page
    }
  }
}

并使用action.url在还原器中访问它。或者,您可以将其视为原样,并在承诺决议中访问它:

action.payload.then(function(response) {
  var url = response.config.url;
});

相关内容

  • 没有找到相关文章

最新更新