gpt4 book ai didi

javascript - 未调用 Redux reducer

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:06 25 4
gpt4 key购买 nike

使用 redux-api-middleware我遇到了一个问题,其中一个且只有一个 reducer 函数没有触发。

我想以与处理成功的 api 请求类似的方式处理失败的 api 请求。然而据我所知,SEARCH_FAILURE FSA 从未得到处理,尽管它被视为 (AFAICT) 与 SEARCH_SUCCESS FSA 相同。根据我在 devtools 中看到的内容,它似乎确实是创建和调度的。

我有这个

import { CALL_API } from 'redux-api-middleware'
import { handleActions } from 'redux-actions'
const searchReducer = handleActions({

//... other handlers elided

SEARCH_SUCCESS: (state = defaultState, action) => {
return {
...state,
search_results: ({...action.payload}),
api: {
requestPending: false,
searchPending: false
},
}
},

SEARCH_FAILURE: function(state = defaultState, action) {
console.log("Handling SEARCH_FAILURE given state, action: ", state, action)

return {
...state,
search_results: {Total: 0},
api: {
requestPending: false,
error: action.payload
},
errors: [action.payload, ...state.errors]
}
},
})

SEARCH_SUCCESS FSA 由 searchReducer 处理,但是当服务器给出 400 响应时,SEARCH_FAILURE 处理程序永远不会被调用——在至少我没有看到我期望的日志输出,而且状态肯定不会最终看起来正确。但是,我确实在 redux devtools 面板中看到了一个 SEARCH_FAILURE 条目。

让我更加困惑的是,这是我目前拥有的关于创建 RSAA 的声明

export function doSearch( selected_filters, page ){
let qs = SearchPage.constructQueryString(selected_filters, page)

return {
[CALL_API]: {
endpoint: `/api/songs/search?${qs}`,
method: 'GET',
types: [
{type: SEARCH_REQUEST},
{type: SEARCH_SUCCESS},
{
type: SEARCH_FAILURE,
payload: (action, state, res) => {
if (400 === res.status)
{
console.log(`${SEARCH_FAILURE} payload: `, action, state, res)
}
return res
}
},
],
headers: { 'Content-Type': 'application/json' },
credentials: 'include'
}
}
}

payload 函数正在被调用并或多或少地记录我所期望的。那我在这里搞砸了什么?据我对 redux-api-middleware 文档的多次阅读可以看出,此设置应该会产生我想要的行为,但事实并非如此。成功者成功,失败者失败...

最佳答案

当我使用对象定义我的一种类型时遇到了类似的问题,而不仅仅是您为 SEARCH_FAILURE 所做的操作。我最终通过更新我的 package.json 来修复:

"redux-api-middleware": "^1.0.0-beta3",

我认为问题在于文档描述了 1.0.0 版 API,但是当您:

npm install redux-api-middleware --save

您最终得到了该包的早期版本。

关于javascript - 未调用 Redux reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com