sourcecode

Vuex 배열에서 항목 제거

copyscript 2022. 8. 8. 19:59
반응형

Vuex 배열에서 항목 제거

Vuex를 사용하기 시작한 지 얼마 되지 않았지만 문제가 있습니다(이것은 제 입장에서 알 수 없는 구문 오류일 수 있습니다).liked_items를 가진 사용자가 있으며 아이템과 다른 네트워크 콜이 있습니다.

mutations: {
SET_TOGGLE_LIKED: (state, { global_id }) => {
  alert('here is global_id: ' + global_id)
 state.user.liked_items.find((obj,i) => {
   if(obj.global_id === global_id){ // no global_id
      console.log('that exists at i: ' + i + ' with length: ' + state.user.liked_items.length)
      state.user.liked_items.splice(i, 1)
      console.log('that exists at i: ' + state.user.liked_items.length)
   }else{
     console.log('that doesnot exist!')
   }
 })
}

liked_items 목록에서 아이템을 삭제한 후 해당 아이템이 리콜된 것 같고 undefined에 global_id가 존재하지 않는다는 오류가 나타납니다.

다음을 통해 수정할 수 있습니다.

 state.user.liked_items.find((obj,i) => {
   if(obj){
     if(obj.global_id === global_id){

하지만 왜 내가 그 존재에 대해 확인할 필요가 있는가?obj여기?

또한 지도를 사용하여 이 정보를 얻을 수 있습니다.index다음 명령을 사용하여 개체를 제거합니다.

돌연변이

REMOVE_OBJECT_FROM_ARRAY: (state, payload) => {
    const i = state.someArrayofObjects.map(item => item.id).indexOf(payload.id);
    state.someArrayofObjects.splice(i, 1);
  }

여기, 그idpayload와 함께 전달되는 ID입니다.MUTATION, 또한, 우리는 오직 다음 명령어만 통과시킬 수 있습니다.id전체적으로payload이 경우 다음과 같은 작업을 수행할 수 있습니다.

REMOVE_OBJECT_FROM_ARRAY: (state, payload) => {
    const i = state.someArrayofObjects.map(item => item.id).indexOf(payload);
    state.someArrayofObjects.splice(i, 1);
  }

가지고 계신 경우undefined의 요소로서liked_items어레이는obj~하듯이undefined가끔씩.

심플하게 할 수 있습니다.if단, 다음과 같습니다.

 state.user.liked_items.find((obj,i) => {
   if(obj && obj.global_id === global_id){

또는 어레이를 프리필터링하여 non-filtering만 할 수 있습니다.undefined값:

 state.user.liked_items.filter(o => o).find((obj,i) => {
   if(obj.global_id === global_id){

다음 변환을 사용할 수 있습니다.spliceJavascript 배열 메서드에서 가져옵니다.

deleteElement: function(state.element) {
  state.myArray.splice(this.events.indexOf(element), 1);
}

요소의 인덱스를 알고 있는 경우, 다음과 같이 됩니다(명확히).

deleteElement: function(state,elementIndex) {
  state.myArray.splice(elementIndex, 1);
}

"1"은 요소에서 시작하는 제거할 요소의 수입니다.색인

언급URL : https://stackoverflow.com/questions/49712059/removing-an-item-from-an-array-in-vuex

반응형