VueJS изменение массива


VueJS изменение массива

27.09.2020 05:23:27 Просмотров 58 Источник

Я использую vuex для хранения состояния, и я вижу странную проблему: кажется, что он изменяет id на одном из моих объектов.

В своем действии я загружаю информацию о заметке

    saveNote({commit}, noteInfo) {
        var formData = new FormData();
        Object.keys(noteInfo.note).forEach(key => formData.append(key, noteInfo.note[key]));
        return axios.post("/notes/saveText/" + noteInfo.note.id, formData).then(res => commit('SAVE_NOTE', res.data)).catch(err => console.log(err));
    },

что дает следующие полезные данные JSON:

{
   "success":1,
   "notes":[
      {
         "id":38,
         "audio_length":null,
         "ap_id":null,
      },
      {
         "id":39,
         "audio_length":null,
         "ap_id":null,
      }
   ],
   "updated":39
}

Я немного урезал его, просто чтобы показать важные части. Затем я запускаю мутацию следующим образом

SAVE_NOTE(state, data) {
        console.log("SAVENOTES", data.notes);
        state.currentPatient.notes = data.notes;
        state.currentNote = state.currentPatient.notes.find(n => n.id = data.updated);
    },

Но, когда я открываю свой chrome debug, я получаю это:

SAVENOTE (2) [{…}, {…}]
0:
ap_id: (...)
audio_length: (...)
id: 39                                 <---- This one should be 38!
__ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
get ap_id: ƒ reactiveGetter()
set ap_id: ƒ reactiveSetter(newVal)
get audio_length: ƒ reactiveGetter()
set audio_length: ƒ reactiveSetter(newVal)
get id: ƒ reactiveGetter()
set id: ƒ reactiveSetter(newVal)
__proto__: Object
1:
ap_id: (...)
audio_length: (...)
id: 39
__ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
get ap_id: ƒ reactiveGetter()
set ap_id: ƒ reactiveSetter(newVal)
....

Есть идеи, почему он меняет идентификатор с 38 на 39?

У вопроса есть решение - Посмотреть?

Ответы - VueJS изменение массива / VueJS modifying array

Является ответом!
Simon

27.09.2020 05:34:49

в мутации SAVE_NOTE ваша последняя строка говорит n.id = data.updated

если посмотреть на вашу полезную нагрузку json, то она выглядит как data.updated = 39. Таким образом, вы устанавливаете n.id = 39.

Помочь в развитии проекта:
Закрыть X