我向后端onClick提交删除请求,当我从服务器获得响应时,我尝试调用调度函数来更新Redux存储。后端数据可以有效地删除请求;但是,当我包含调度调用时,React给了我这个错误:
./src/actions/questions.js
Line 68: 'dispatch' is not defined no-undef
我已经尝试了大量不同的语法和.then组合收到响应但没有任何作用。这让我感到困惑,因为在我做的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:https://github.com/jwolfe890/react_project1/blob/master/stumped-app-client/src/actions/questions.js
再次感谢你。
答案 0 :(得分:0)
您的语法已关闭。 thunk将返回一个以dispatch
为参数的函数。 dispatch
将由中间件传入。因此,您的行动创建者应如下所示:
export function deleteQuestion(questionId, routerHistory) {
return (dispatch) => {
fetch(`${API_URL}/questions/${questionId}`, {
method: 'DELETE',
}).then(res => {
dispatch(removeQuestion(questionId))
})
}
}
答案 1 :(得分:0)
在deleteQuestion
函数中查看问题,既没有定义dispatch
,也没有通过dispatch
作为函数的参数。所以你收到错误dispatch is not defined
。
在redux-thunk
中,您返回一个函数,该函数以dispatch
作为参数,由redux-thunk
中间件提供。这就是它完美运作的原因。