Jaeilit

TIL axios.delete 본문

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