Vue.js vue能否通过方法定义数据?

Vue.js vue能否通过方法定义数据?,vue.js,Vue.js,vue能否通过方法定义数据 export default { data() { return { navData: [ /* ... */ ], defaultData: this.deepClone(this.navData) }; }, deepClone是我定义的一个函数,但是这个方法不能传输到defaultData可能是关于生命周期的?你能给我解释一下吗?谢谢您不能这样做,因为您返回的对象navData所属的对象尚未创建,因此this.n

vue能否通过方法定义数据

export default {
  data() {
    return {
      navData: [ /* ... */ ],
      defaultData: this.deepClone(this.navData)
    };
  },

deepClone是我定义的一个函数,但是这个方法不能传输到defaultData可能是关于生命周期的?你能给我解释一下吗?谢谢

您不能这样做,因为您返回的对象navData所属的对象尚未创建,因此this.navData不可用

解决方案:首先使用navData创建对象,然后添加defaultData:

另一种可能更惯用的解决方案是稍后初始化defaultData:

export default {
  data() {
    let data = {
      navData: [ /* ... */ ],
    };
    data.defaultData = this.deepClone(data.navData);
    return data;
  },
export default {
  data() {
    return {
      navData: [ /* ... */ ],
      defaultData: null;
    }
  },
  mounted() {
    this.defaultData = this.deepClone(this.navData);
  },