vue 数组值没有变化,但可以用watch监听到。

发布于 2022-09-12 00:23:14 字数 462 浏览 19 评论 0

问题描述

vue 从接口取到数据,赋值给某个值,将这个值传给子组件,在子组件中监听该值变化,事实上数据没有改变,但watch一直在执行。请问这是为什么?该如何解决。

问题出现的环境背景及自己尝试过哪些方法

我尝试在接口返回结果时,用 json.stringify() 格式化结果,这个可以满足我的需求。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

// 子组件
 watch: {
    foodData(val, oldval) {
      console.log(val, oldval)
    },
 },
 
 // 父组件
 async getData () {
     let res = await this.$store.dispatch('getFoodData');
     this.foodData = res; 
 },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷雾森÷林ヴ 2022-09-19 00:23:14
this.foodData = res;

为foodData重新赋值,foodData是引用类型,引用是改变了的

懵少女 2022-09-19 00:23:14

加个判断,拿到值再赋值;

  let res = await this.$store.dispatch('getFoodData');
        if(res && res.xx){
             this.foodData = res; 
        }
说谎友 2022-09-19 00:23:14

在子组件监听中重新赋值,
watch: {

foodData (val) {
    this.food = val;
}

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文