Данные исчезают в следующей строке


Данные исчезают в следующей строке

17.09.2020 11:35:15 Просмотров 1 Источник

Может ли кто-нибудь объяснить мне, что происходит в этих кодах и как я могу это решить?

Я получаю данные в родительской функции mounted и обновляю ее данные. Итак, у меня есть новый объект в ребенке. Но значение свойства этого объекта пустое!

Родитель:

<template>
    <div class="main-page">
        <main-content v-bind:config="mainContentConfig" />
    </div>
</template>
mounted(){
    fetchData().then(editions => { editions.sort((e1, e2) => e1.name.toLowerCase().localeCompare(e2.name.toLowerCase()))
        this.mainContentConfig.intranetEditions = [...editions];
        this.mainContentConfig.currentMenuIndex = 1;
    });
}

Ребенок:

mounted(){
    console.log("AA==============>", this.config);
    console.log("BB==============>", this.config.intranetEditions);
}

Но на консоли у меня есть:

enter image description here

Я обнаружил эту проблему, когда я заполняю другие данные в дочернем классе массивом this.config.intranetEditions, который всегда пуст!

Правка: Я тоже пробовал этот код, но никакой разницы!

[...this.config.intranetEditions]

Edit 2 Этот код тоже тестировался, но ничего!

console.log("AA==============>", this.config);
console.log("BB==============>", JSON.stringify(this.config.intranetEditions));
У вопроса есть решение - Посмотреть?

Ответы - Данные исчезают в следующей строке / Data is vanished in next line

Jose Fernández

17.09.2020 11:44:37

Дочерний компонент смонтирован, но родительская выборка еще не закончена, поэтому this.config является наблюдателем до тех пор, пока выборка не будет выполнена (таким образом, then будет запущен) и var не будет выполнен.

Вы можете попробовать, чтобы посмотреть опору config у ребенка-компонент? тогда вы увидите, когда this.config будет выполнено.

https://vuejs.org/v2/guide/computed.html#Watchers

ОБНОВЛЕНИЕ С ПРИМЕРОМ:

дочерний компонент

watch: {
  config(newValue) {
    console.log("AA==============>", newValue.intranetEditions);
    checkConfigValue();
  },
},

methods: {
  checkConfigValue() {
    console.log("BB==============>", this.config.intranetEditions);
  };
},

Таким образом, вы можете сделать что-то в наблюдателе с помощью newValue или вызвать метод и использовать this.config. Обе консоли в этом случае будут печатать одно и то же.

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