Reactjs React Redux操作不';我什么也不做
在Redux中,我创建了另一个动作,只是复制了以前的一个动作,但它不起作用 有效的方法是:Reactjs React Redux操作不';我什么也不做,reactjs,react-redux,Reactjs,React Redux,在Redux中,我创建了另一个动作,只是复制了以前的一个动作,但它不起作用 有效的方法是: export const addEntry = entry => { const config = { headers: { "Content-Type": "application/json", }, } return async dispatch => { const response = await
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
也可以完美地工作。有什么想法吗?您必须使用axios.delete
而不是axios.post来删除ItemId
您还必须像'DELETE\u ENTRY'
那样放置删除项,否则您的减速机将无法理解它第一个日志之所以出现,是因为这是操作创建者的一部分。通常,action creator返回一个{type:,payload:}
形状的对象,但在本例中,它返回一个新函数,称为“thunk”
如何调度此操作
为了实现这一点,您必须包括redux thunk中间件,如果它通过分派(…)
接收函数,它将执行该函数
阅读有关感谢@HMR,我刚刚忘记了分派(deleteEntry(item.itemId))
当我调用操作时似乎您必须删除带有itemId的条目。如果您使用的是axios.post
,我建议您使用axios.delete
。否则,它看起来不错。这可能会有帮助:它是否正在被调度?您能在任何异步操作之前调度类似于dispatch({type:'begindelete'})
的东西吗?有人提出要求吗?在浏览器中有一个叫做开发工具的东西,它有一个网络选项卡,您可以在其中查看网络活动,如果安装了redux选项卡(redux开发工具)这在发布问题时非常有用,因为这些问题的质量比它不起作用
或它什么都不做
它已经存在了。删除但是。发布只是一个try@MarcoDisco如果使用react-redux-connect调用props,很可能您没有从组件中分派操作。从组件中删除条目(id)
或const dispatch=usedpatch();dispatch(deleteEntry(id))
如果您使用钩子。不,您必须将其放在括号之间才能工作('
),因为在您的减缩器中,它类似于:案例“DELETE\u ENTRY”: