使用
redux-api-middleware
我遇到了一个问题,其中我的一个且只有一个减速器功能没有触发.
我想以类似于处理成功的api请求的方式处理失败的api请求.但据我所知,SEARCH_FAILURE FSA永远不会得到处理,尽管它与SEARCH_SUCCESS FSA的处理方式相同(AFAICT).根据我在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,res) => { if (400 === res.status) { console.log(`${SEARCH_FAILURE} payload: `,action,res) } return res } },],headers: { 'Content-Type': 'application/json' },credentials: 'include' } } }
正在调用有效载荷函数,并且或多或少地记录我期望的内容.那么我在这里搞砸了什么?据我所知,对于redux-api-middleware的文档的多个读数,这个设置应该产生我想要的行为,但事实并非如此.成功成功,但失败失败……
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。