Reactjs 单击delete dispatch won'作出反应;t在收到响应后发送第二个调度请求

Reactjs 单击delete dispatch won'作出反应;t在收到响应后发送第二个调度请求,reactjs,redux,fetch,redux-thunk,dispatch,Reactjs,Redux,Fetch,Redux Thunk,Dispatch,在一个组件中,我有一个按钮,onClick发送一个deleteQuestion操作,该操作发送一个获取后端删除请求,当收到响应时,应该调用另一个操作来更新Redux存储 但是,由于它是onClick事件,deleteQuestion thunk函数的工作方式与ComponentWillMount发出的传统分派请求不同,而是返回一个匿名函数,其中包含一个从未调用过的分派参数。因此,我需要在onClick方法中同时调用调度两次,如下所示: handleDelete = () => {

在一个组件中,我有一个按钮,onClick发送一个deleteQuestion操作,该操作发送一个获取后端删除请求,当收到响应时,应该调用另一个操作来更新Redux存储

但是,由于它是onClick事件,deleteQuestion thunk函数的工作方式与ComponentWillMount发出的传统分派请求不同,而是返回一个匿名函数,其中包含一个从未调用过的分派参数。因此,我需要在onClick方法中同时调用调度两次,如下所示:

   handleDelete = () => {
    const { questionId } = this.props.match.params
    const { history } = this.props
    deleteQuestion(questionId, history)(deleteQuestion); //calling method twice
   }
虽然这种方法可以有效地触发对Rails后端的删除请求,但当我收到响应时,我嵌入在deleteQuestion操作中的第二个分派函数——dispatch(removeQuestion(questionId))——将不会触发更新Redux存储。我曾尝试在存储中放置多个调试器,并检查控制台和终端是否存在错误,但什么也没有发生

我在网上阅读了Redux文档和其他资源,从我所能找到的内容来看,他们都说应该可以在.then请求中包含第二个分派调用。虽然可以在get、post和patch请求中执行此操作,但我不明白为什么它在delete请求中不起作用

我打的电话是:

 export function deleteQuestion(questionId, routerHistory) {
   return (dispatch) => {
     fetch(`${API_URL}/questions/${questionId}`, {
       method: 'DELETE',
     }).then(res => {
       dispatch(removeQuestion(questionId))
     })
   }
 }  
github是:


我真的很感谢你的任何见解,因为我两天来一直在努力通过这个考试

您直接调用操作
deleteQuestion
,而不是让门店为您分派删除问题操作。您应该从已映射到dispatch的道具中调用
deleteQuestion

handleDelete = () => {
  const { questionId } = this.props.match.params
  const { history } = this.props
  this.props.deleteQuestion(questionId, history);
}
如果以
mapDispatchToProps
的形式传入对象,则每个元素都是dispatch调用。换句话说,您的
mapDispatchToProps
相当于:

(dispatch) => ({ 
    deleteQuestion: (...params) => dispatch(deleteQuestion(...params)) 
})

这个组件的
mapDispatchToProps
是什么样子的?我导入操作,然后将其包含在连接函数中:导出默认连接(MapStateTrops,{deleteQuestion})(问题卡);deleteQuestion被触发,删除请求通过,它只是不支持嵌入其中的第二个分派。啊。非常感谢。我在那个组件上做了太多的修补,我忘了把this.props添加回去!不知何故,它现在正在神奇地与它一起工作,而昨天它没有触及rails后端。再次感谢!