Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 功能赢得';在React中的Fetch Delete请求之后,不发送Redux分派_Reactjs_Redux_Fetch_Redux Thunk - Fatal编程技术网

Reactjs 功能赢得';在React中的Fetch Delete请求之后,不发送Redux分派

Reactjs 功能赢得';在React中的Fetch Delete请求之后,不发送Redux分派,reactjs,redux,fetch,redux-thunk,Reactjs,Redux,Fetch,Redux Thunk,我向后端onClick提交一个删除请求,当我从服务器得到响应时,我尝试调用一个调度函数来更新Redux存储。后端数据可以有效删除请求;但是,当我包括分派呼叫时,React会给我以下错误: ./src/actions/questions.js Line 68: 'dispatch' is not defined no-undef 我尝试了大量不同的语法和。然后在收到响应后进行组合,但没有任何效果。这让我很困惑,因为在我发出的thunk-fetch调用中,我能够在收到响应时调用disp

我向后端onClick提交一个删除请求,当我从服务器得到响应时,我尝试调用一个调度函数来更新Redux存储。后端数据可以有效删除请求;但是,当我包括分派呼叫时,React会给我以下错误:

  ./src/actions/questions.js
  Line 68:  'dispatch' is not defined  no-undef
我尝试了大量不同的语法和。然后在收到响应后进行组合,但没有任何效果。这让我很困惑,因为在我发出的thunk-fetch调用中,我能够在收到响应时调用dispatch。我不能使用传统的thunk语法,因为它不会触发请求,因为它最初是在组件中的onClick事件中触发的。因此,我发出的删除获取请求如下所示:

 export function deleteQuestion(questionId, routerHistory) {
     return fetch(`${API_URL}/questions/${questionId}`, {
         method: 'DELETE',
     }).then(res => 
     dispatch(removeQuestion(questionId)))
   }
我曾考虑将removeQuestion分派到方法之外,但随后我担心Redux存储将与后端数据不同步,并在以后导致问题。我非常感谢任何人能提供的见解。我不认为删除一个项目和更新Redux商店应该如此具有挑战性

这也是github:


再次感谢你

您的语法已关闭。thunk将返回一个函数,该函数接受
dispatch
作为参数<代码>分派将由中间件传入。因此,您的操作创建者应如下所示:

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

你的语法不正确。thunk将返回一个函数,该函数接受
dispatch
作为参数<代码>分派将由中间件传入。因此,您的操作创建者应如下所示:

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

请看问题出在您的
deleteQuestion
函数中,您既没有定义
dispatch
是什么,也没有将
dispatch
作为参数传递给函数。因此,您得到的错误是
未定义分派


redux-thunk
中,返回一个函数,该函数以
dispatch
作为参数,该参数由
redux-thunk
中间件提供。这就是它工作正常的原因。

请看问题出在
deleteQuestion
函数中,您既没有定义
dispatch
是什么,也没有将
dispatch
作为参数传递给函数。因此,您得到的错误是
未定义分派


redux-thunk
中,返回一个函数,该函数以
dispatch
作为参数,该参数由
redux-thunk
中间件提供。这就是为什么它工作得非常好。

我最初尝试过这种方法,但在onClick处理程序中,它给了我一些问题。为了让fetch调用运行,我必须在onClick方法中包括以下内容:handleDelete=()=>{const{questionId}=this.props.match.params const{history}=this.props deleteQuestion(questionId,history)(deleteQuestion);}基本上,调用该方法两次。在第二次调用时,调度函数将不会运行。这是您的实际问题。您应该将此作为一个单独的问题添加进来。我最初尝试过这种方法,但在onClick处理程序中它给了我一些问题。为了让fetch调用运行,我必须在onClick方法中包括以下内容:handleDelete=()=>{const{questionId}=this.props.match.params const{history}=this.props deleteQuestion(questionId,history)(deleteQuestion);}基本上,调用该方法两次。在第二次调用时,调度函数将不会运行。这是您的实际问题。您应该将其作为一个单独的问题添加。但是deleteQuestion函数被导出到一个组件中,并使用该组件中的参数调用,因此我无法将分派作为一个参数传入,我不认为。由于deleteQuestion分派是通过onClick事件触发的,因此似乎不可能用传统的thunk方式定义/返回分派。但是deleteQuestion函数被导出到一个组件中,并使用该组件中的参数调用,因此我无法将分派作为一个参数传入,我认为这不是一个参数。由于deleteQuestion分派是通过onClick事件触发的,因此似乎不可能用传统的thunk方式定义/返回分派。