TIL
TIL axios.delete
Jaeilit
2021. 10. 13. 19:45
728x90
axios하면서 delete에 고민에 빠진 이유
1. axios 에서 delete 해서 삭제 할 id 값을 넘기면 url 로 넘기면
삭제가 되는데 그러면 어떻게 렌더링 해줄것인가?
왜 프론트에는 삭제가 안되있고 새로고침해야 삭제가 되어있나?
-> 생각해보니 리덕스에서는 삭제를 안했다. axios.delete 는 서버에서 삭제 하는 명령어임.
2. 삭제는 과연 미들웨어 포함되어야하는가?
-> delete는 즉시되야하지않은가 굳이 서버단을 기다렸다가 삭제해야하는가 라는 고민을 했습니다.
생각해보니 서버단을 제외하고 리덕스만 제외할때는 미들웨어가 필요가 없는데
서버도 지워야하니 미들웨어가 포함되어야한다.
//액션함수
const delete_list = createAction(DELETE_LIST, (basket_id) => ({ basket_id }))
// 미들웨어
const deleteListMiddleWares = (basket_id) => {
return function (dispatch, getState, { history }) {
instance
.delete(`/list/${basket_id}`)
.then((res) => {
dispatch(delete_list(basket_id))
})
.catch((err) => {
console.log(err, "삭제에러")
})
}
}
//리듀스
[DELETE_LIST]: (state, action) =>
produce(state, (draft) => {
// 버튼 눌렀을 때 해당 id 값을 받아와서 findIndex로 해당 id 값 찾아서 splice 해주낟.
let idx = draft.basket_list.findIndex((p) => {
return p.id === action.payload.basket_id
})
if (idx !== -1) {
// 배열에서 idx 위치의 요소 1개를 지웁니다.
draft.basket_list.splice(idx, 1)
}
}),
728x90