Тип массива соединения prop в компоненте Vue


Тип массива соединения prop в компоненте Vue

16.09.2020 06:35:00 Просмотров 33 Источник


В моем компоненте у меня есть массив типа prop. Если я использую функцию splice для массива, то событие $emit не срабатывает. Кто-нибудь может мне помочь, почему? Метод removeItem, вызываемый кнопкой @click on.

Код

Спасибо

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

Ответы - Тип массива соединения prop в компоненте Vue / Splice array type prop in Vue component

Anatoly

16.09.2020 06:44:28

Вызывая splice, вы изменяете содержимое customBenefitsObj, но не сам массив. Если вы сделаете что-то подобное:

this.customBenefitsObj = []

затем set customBenefitsObj будет называться и emit, а также.

Кроме того, не рекомендуется мутировать реквизит. Вы должны выдать измененную копию массива и перезаписать ее в Родительском компоненте или выдать операцию удаления и элемент для удаления (фактическое удаление также должно быть в Родительском компоненте).

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

16.09.2020 06:49:53

splice не вызовет set на computed. Самое простое, что можно сделать, - это потом выполнить задание самому себе.

this.customBenefitsObj = this.customBenefitsObj;

Смотрите демо-версию ниже, которая пишет "тест" только один раз.

Vue.config.productionTip = false;
Vue.config.devtools = false;

new Vue({
  el: "#app",
  computed: {
    test: {
      get() {
        return [1, 2, 3, 4, 5];
      },
      set(v) {
        console.log("Test");
      }
    }

  },
  mounted() {
    this.test.splice(0, 1);
    this.test = this.test;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app"></div>

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