Todos接口重构——状态切换操作接口对接-axios.patch只更新传递数据-patch请求方式需要提供url的id,无法批量更新;axios.put会更新全部
- 控制单个条目的状态更新
src/store/ActionCreator.js
export const toggleItemActionAsync = (id) => {
return async (dispatch) => {
// 更新单个条目的状态
let todo = await axios.get('todos/' + id)
todo.data.done = !todo.data.done
// patch只更新传递数据;put会更新全部
//await axios.patch('todos/' + id, {
// done: flag
//})
await axios.put('todos/' + id, todo.data)
let action = toggleItemAction(id)
dispatch(action)
}
}
编辑效果
展示数据
- 批量状态切换
- 虽然这样可以实现业务,但是项目中不要这样做
- 正式的后台项目应该提供批量更新的接口(本质上后台只需要执行一条SQL语句即可)
export const toggleAllActionAsync = (isAll) => {
return async (dispatch) => {
// 切换索引任务的状态(patch请求方式需要提供url的id,无法批量更新)
let list = await axios.get('todos')
// 虽然这样可以实现业务,但是项目中不要这样做
// 正式的后台项目应该提供批量更新的接口(本质上后台只需要执行一条SQL语句即可)
list.data.forEach(item => {
// patch只更新传递数据;put会更新全部
axios.patch('todos/' + item.id, {
done: !isAll
})
})
let action = toggleAllAction(isAll)
dispatch(action)
}
}