【发布时间】:2020-10-21 22:36:36
【问题描述】:
在 Redux 中,我创建了另一个操作,只是复制了以前的工作,但它不起作用。
有效的:
export const addEntry = entry => {
const config = {
headers: {
"Content-Type": "application/json",
},
}
return async dispatch => {
const response = await axios
.post("http://localhost:5000/api/db/addentry", entry, config)
.then(results => results.data)
try {
await dispatch({ type: ADD_ENTRY, payload: response })
} catch (error) {
console.log("await error", error)
}
}
}
没有的:
export const deleteEntry = itemId => {
console.log("action delete 1") // step 1
return async dispatch => {
console.log("action delete 2") // step 2
const response = await axios.delete(
`http://localhost:5000/api/db/deleteitem/${itemId}`,
itemId
)
try {
console.log("action delete 3") // step 3
await dispatch({ type: DELETE_ENTRY, payload: response })
} catch (error) {
console.log("await error", error)
}
}
}
如果我逐步记录它,它会在第一次记录后停止
它什么也没做。相同的功能addEntry 完美运行。有什么想法吗?
【问题讨论】:
-
看来您必须删除带有 itemId 的条目。而你正在使用
axios.post,我建议你使用axios.delete。否则,它看起来不错。 -
发送了吗?你能在异步之前发送类似
dispatch({type:'begin delete'})的东西吗?是否提出请求?在浏览器中有一个叫做开发工具的东西,它有一个网络选项卡,您可以在其中查看网络活动,如果安装有一个 redux 选项卡(redux 开发工具),在发布关于 SO 的问题时非常有用质量优于it doesn't work或it does nothing -
它已经是 .delete 但 .post 只是一个尝试
-
@MarcoDisco 如果你使用 react redux connect 你可能没有从你的组件调度操作,你从你的组件调用
props. deleteEntry(id),如果你使用钩子,你调用const dispatch = useDispatch();dispatch(deleteEntry(id))。
标签: reactjs react-redux