我能够很好地发送get和put方法,但令人惊讶的是我无法将Redux操作中的删除提取请求发送到我的Rails后端。这更令人困惑,因为在Postman我能够很好地击中Destroy路线。我已经搜索了所有修复,但没有找到任何有用的东西。我有一个onClick函数,它触发发送此请求的Redux操作:
export const deleteQuestion = (questionId, routerHistory) => {
return dispatch => {
return fetch(`${API_URL}/questions/${questionId}`, {
method: 'DELETE',
}).then(response => {
dispatch(removeQuestion(questionId));
routerHistory.replace(`/`);
})
.catch(error => console.log(error));
};
};
我已多次检查以确保语法和路线正常。 questionId也是正确的问题ID。但是,无论我做什么,Questions控制器中的Destroy方法都无法识别请求。我已经检查了Rails中的路由并且它存在。我没有收到任何错误,没有任何请求被发送到服务器,也没有返回任何内容,而不是在终端,控制台或任何东西。
这是Github帐户:https://github.com/jwolfe890/react_project1
我真的很感激任何人的见解。谢谢!
答案 0 :(得分:1)
您的deleteQuestion
方法返回一个匿名函数,其中dispatch
参数似乎永远不会被调用(Calling code)。仅调用deleteQuestion
,但不调用它返回的函数。
因为它是由点击处理程序调用的,我说你实际上想要这样的东西:
export const deleteQuestion = (questionId, routerHistory) => {
fetch(`${API_URL}/questions/${questionId}`, {
method: 'DELETE',
}).then(response => {
dispatch(removeQuestion(questionId));
routerHistory.replace(`/`);
})
.catch(error => console.log(error));
};
或者,如果您想要返回承诺,您当然可以将其更改为:
export const deleteQuestion = (questionId, routerHistory) => {
return fetch(`${API_URL}/questions/${questionId}`, {
method: 'DELETE',
}).then(response => {
dispatch(removeQuestion(questionId));
routerHistory.replace(`/`);
})
.catch(error => console.log(error));
};
如果你想动态注入调度函数,你可以保留原始代码,但是必须调用这样的方法:
deleteQuestion(this.state.question.id, history)(myDispatchMethod);