Reactjs 功能赢得';在React中的Fetch Delete请求之后,不发送Redux分派
我向后端onClick提交一个删除请求,当我从服务器得到响应时,我尝试调用一个调度函数来更新Redux存储。后端数据可以有效删除请求;但是,当我包括分派呼叫时,React会给我以下错误: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
./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方式定义/返回分派。