You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue开发中如何在data内部引用另一个同层级的data属性的值

你当前的写法无法生效,是因为data函数执行构建返回对象时,整个返回的data实例还没有挂载到this上,此时this.somerandom还未定义,拿到的值会是undefined。

解决方法

方法1:提取公共初始值(仅需初始值同步时使用)

如果只需要两个属性的初始值保持一致,后续不需要联动更新,直接在data函数内部先定义公共变量再复用即可:

export default {
  data () {
    // 先定义公共初始值
    const initRandom = "foo"
    return {
        somerandom: initRandom,
        mylist: {
            random: initRandom
        }
    }
  }
}

方法2:将mylist定义为计算属性(需要双向联动时使用)

如果要求后续somerandom修改时,mylist.random自动同步更新,直接把mylist定义为计算属性是最简洁的方案:

export default {
  data () {
    return {
        somerandom: "foo"
    }
  },
  computed: {
    mylist() {
      return {
        random: this.somerandom
      }
    }
  }
}

方法3:使用watch监听(mylist存在大量其他固定属性时使用)

如果mylist还有很多不需要联动的固定属性,不想把整个mylist做成计算属性,可以用watch监听somerandom的变化,单独更新random字段:

export default {
  data () {
    return {
        somerandom:"foo",
        mylist:{
            other: 'bar', // 其他固定属性
            random: ''
        }
    }
  },
  watch: {
    somerandom: {
      immediate: true, // 初始化阶段就执行一次赋值
      handler(newVal) {
        this.mylist.random = newVal
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者FeelRightz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:24:01