vue, локальные данные и реактивное обновление
От: DenisCh  
Дата: 15.09.19 07:59
Оценка:
Добрый...
Наткнулся тут на штуку, которую не понимаю, как обойти. (Я даже не чайник в веб-программировании, а так... Кипятильник)
Есть простой vue-компонент (схема упрощена до предела):
<template>
  <div>{{dPagedata}}</div>
</template>

<script lang='ts'>
import { Component, Vue, Prop } from 'vue-property-decorator';
@Component
export default class Page extends Vue {
  @Prop() public Pageid: string;
  private Pagedata: string;
  private data() {
    return {
      dPagedata: this.Pagedata,
    }
  }

  private created() {
    DataModule.GetDataAsync(this.Pageid)
    .then((val) => {
      this.$data.dPagedata = val;
    });

}

Параметр Pageid устанавливается родителем, идёт получение данных и всё более-менее нормально рисуется при переходе, например, с / на /Page?Pageid=1.
Но потом, когда мы переходим c/Page?Pageid=1 на /Page?Pageid=2 (например, по прямой ссылке) — created, разумеется, не срабатывает. А срабатывает updated() вида, аналогичного create.
И вот тут загвоздка. Поскольку меняются реактивно связанные данные — тут же возникает опять updated() и мы зацикливаемся.

Понимаю, что я что-то делаю не так, но что не так — я не понимаю...

Подскажите, куда копать?
[url=https://github.com/abbat/avalon1.0.449[/url]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.