VueJs Метод меняет непосредственно ответ - PullRequest
0 голосов
/ 17 июня 2020

У меня есть родительский компонент, и я делаю запрос для бэкенда, затем с помощью панели навигации и данных activeView в родительском компоненте с помощью кликов я визуализирую новую дочернюю страницу и передаю опору из моего ответа с помощью v-if в vue. Но одна из функций метода - изменить мою опору в родительском компоненте, а также ИЗМЕНИТЬ МОЙ ОТВЕТ, как это может быть возможно. Это перед монтированием моего дочернего компонента:

beforeMount() {
    console.log(this.plansPropOrg);
    this.plansProp = this.plansPropOrg;
    this.tempPlan = this.plansProp.currentPlan;

    console.log(this.plansProp);
    this.propsToData();
}

проблема c функция propsToData, когда я прокомментирую здесь, это нормально, но я должен это вызвать.

И здесь является моим родителем, когда я делаю запрос:

await axios.post("xxxxx/yyyyyyy").then(res => {
                console.log("heyyo");
                console.log(res);
                this.plansData = res.data.data;
                console.log(this.plansData);
            });

И вот реквизиты для данных, он просто переводит логические значения в engli sh. Но в ответе (если это правда) я вижу значения как переводы.

propsToData() {
        //TODO: Burdaki if' ifsubscriber olarak değişecel
        console.log("AAA");
        console.log(this.plansProp);
        if (this.plansProp.isSubscriber) {
            console.log("BBBBB");
            this.plansProp.currentPlan.analytics
                ? (this.plansProp.currentPlan.analytics = this.$t(
                      "settings.plans.active"
                  ))
                : (this.plansProp.currentPlan.analytics = this.$t(
                      "settings.plans.inactive"
                  ));
         }
   }

Как такое возможно, как можно изменить ответ?

1 Ответ

1 голос
/ 17 июня 2020

Вы копируете ответ и объект plansProp по ссылке, то есть оба объекта указывают на одно и то же место в памяти. Когда вы меняете один из них, другой по-прежнему указывает на то же место в памяти, что означает, что когда вы его извлечете, это будет тот же объект.

Вы хотите сделать либо неглубокий ( Object. assign () ) или глубокую (JSON.parse(JSON.stringify())) копию, в зависимости от того, как структурирован ваш объект.

Подробнее об этом здесь https://www.javascripttutorial.net/object/3-ways-to-copy-objects-in-javascript/.

...