小编Pat*_*ell的帖子

为什么我会使用Redux Promise Middleware而不是Redux Promise?

我使用过Redux Promise,但似乎Redux Promise Middleware具有更多功能,例如通过附加"PENDING"或"FULFILLED"来调度多个动作.

为什么我会使用一个而不是另一个?

javascript redux redux-promise redux-promise-middleware

7
推荐指数
1
解决办法
5790
查看次数

Redux Promise和Redux Promise中间件有什么意义?

我搜索过高低,但找不到明确的答案。

我设法将注意力集中在Redux的机制上,但是当我谈到API调用和异步操作创建者时,我就​​在Promises的上下文中停留在中间件上。

你能帮我弄好乱子吗?

这个难题的矛盾部分让我头疼:

  1. YT教程之一说,本机Redux分派方法不支持从动作创建者返回的诺言-因此需要Redux Promise库(我知道该项目现在可能已经死了,并且继续是Redux Promise中间件)。

  2. Dan在“ redux-thunk和redux-promise之间有什么区别? ”中说,即使没有中间件,我也可以使用诺言-只需在动作创建者中对其进行管理即可。

  3. 在其他答案中,我找到了使用thunk的示例,其中动作创建者返回了一个... promise(后来在调用者中处理/ dispatch(myActionCreator(params).then(...) /所以一个promise 可以由a返回)没有任何redux-promise lib的thunk 。

  4. 在“ redux-thunk和redux-promise之间有什么区别? ”中,接受的答案指出Redux Thunk返回函数,而Redux Promise返回promise ..到底是什么?

总结一下:使用Redux Promise或Redux Promise中间件有什么意义?为什么仅Redux不能原生支持诺言?

更新:

我刚刚意识到,在3点以上我忽略then()连接dispatch包括dispatch()ARGS。

redux redux-thunk redux-promise redux-promise-middleware

6
推荐指数
2
解决办法
4907
查看次数

如果指定了多个类型和有效负载选项,为什么Redux Promise会返回未解决的promise?

我很难搞清楚为什么会发生这种情况,但基本上Redux Promise对我来说很好,同时返回的内容如下:

    return {
      type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
      payload: request
    }
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要像这样传递另一个信息

    return {
     order: 0, // New field
     type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
     payload: request
    }
Run Code Online (Sandbox Code Playgroud)

这导致未解决的承诺而不是数据.我尝试重命名orderposition或者index......仍然没有.

javascript asynchronous reactjs redux redux-promise

5
推荐指数
1
解决办法
399
查看次数

我应该在调度时捕获 Redux promise 错误还是只在 reducer 中处理它?

所以基本上我正在使用 thunk 和 redux-promise-middleware 调度一个动作,这使得 API 调用返回一个承诺。然后我将返回的承诺作为“有效载荷”参数发送给另一个动作创建者,该参数与 redux-promise-middleware 一起使用并处理不同的动作 MY_ACTION_TYPE_PENDING 或 MY_ACTION_TYPE_REJECTED 或 MY_ACTION_TYPE_FULFILLED。我的问题是我是否通过 _REJECTED 操作处理 reducer 中的错误,而不是在我的 dispatch(actionCreator(payload)? _REJECTED ACTION 错误。

下面是我的一些操作:

export const RECEIVE_POSTS = 'RECEIVE_POSTS';
export const receivePosts = (data) => ({
    type: RECEIVE_POSTS,
    payload: data
})

// thunk middleware for fetching blog
                    export const fetchPosts = () => { 
                        return (dispatch) => {
                            const payload = contentfulClient.getEntries().then(
                                data => data.items,
                                error => console.log('An error occurred in fetchPost thunk middleware', error)
                                ) 
                            return dispatch(receivePosts(payload))
                            .catch((error) => { …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs es6-promise redux redux-promise-middleware

5
推荐指数
1
解决办法
3349
查看次数

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

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

我有以下动作创建者:

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

在我的FETCH_USERS_PENDING动作减速器中,我想在我的状态中保存请求的URL.我怎样才能做到这一点?

redux axios redux-middleware redux-promise-middleware

4
推荐指数
1
解决办法
1928
查看次数