Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?

原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738

2017年11月16日 14:22:50 zhouweixue_vivi 阅读数:29918

最近用vue做一个新项目,经历了各种折磨,每次遇到问题都想大喊,格劳资上JQuery,氮素肯定是不行的,今天遇到一个小问题,Vue父组件向子组件传递一个动态的值,子组件只能获取初始值,不能实时更新?

这就有点折磨人了,设想的是,父组件发生变化获取数据,动态传递给子组件,子组件实时刷新视图。vue视图是数据驱动的嘛,这设想就是完美而合理的了吧。可就是不行!!!!

请教前辈,支个招让用vuex,可就是个小功能能,有点杀鸡用牛刀啊,又去查了查文档,找了找资料。原来需要在子组件watch(监听)父组件数据的变化。

我就这样使用watchl啦,

  1. data() {

  2.  

    return {

  3.  

    frontPoints: 0

  4.  

    }

  5.  

    },

  6.  

    watch: {

  7.  

    frontPoints(newValue, oldValue) {

  8.  

    console.log(newValue)

  9.  

    }

  10.  

    }

咦?又出幺蛾子了,完全监听不到嘛!!!

继续查文档,好嘛,原来这种方式只能watch基础类型的变量,我传递的是个object啊,代码,真的处处是坑。。。

为了防止将来继续掉坑,做个总结吧

1、普通watch

如上所示,用过vue的都应该挺熟悉的

2、数组的watch

  1. data() {

  2.  

    return {

  3.  

    winChips: new Array(11).fill(0)

  4.  

    }

  5.  

    },

  6.  

    watch: {

  7.  

      winChips: {

  8.  

        handler(newValue, oldValue) {

  9.  

          for (let i = 0; i < newValue.length; i++) {

  10.  

            if (oldValue[i] != newValue[i]) {

  11.  

              console.log(newValue)

  12.  

            }

  13.  

          }

  14.  

        },

  15.  

        deep: true

  16.  

      }

  17.  

    }

3、对象的watch

  1. data() {

  2.  

      return {

  3.  

        bet: {

  4.  

          pokerState: 53,

  5.  

          pokerHistory: ‘local‘

  6.  

        }

  7.  

    }

  8.  

    },

  9.  

    watch: {

  10.  

      bet: {

  11.  

        handler(newValue, oldValue) {

  12.  

          console.log(newValue)

  13.  

        },

  14.  

        deep: true

  15.  

      }

  16.  

    }

tips: 只要bet中的属性发生变化(可被监测到的),便会执行handler函数;如果想监测具体的属性变化,如pokerHistory变化时,才执行handler函数,则可以利用计算属性computed做中间层。事例如下:

4、对象的具体属性watch(活用computed)

  1. data() {

  2.  

      return {

  3.  

        bet: {

  4.  

          pokerState: 53,

  5.  

          pokerHistory: ‘local‘

  6.  

        }

  7.  

    }

  8.  

    },

  9.  

    computed: {

  10.  

      pokerHistory() {

  11.  

        return this.bet.pokerHistory

  12.  

      }

  13.  

    },

  14.  

    watch: {

  15.  

      pokerHistory(newValue, oldValue) {

  16.  

        console.log(newValue)

  17.  

      }

  18.  

    }

原文地址:https://www.cnblogs.com/mmzuo-798/p/10324557.html

时间: 2024-10-18 09:37:25

Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?的相关文章

Vue2.x 兄弟组件之间的数据传递

兄弟组件之间的数据传递 思路:创建三个组件分别是<my-aaa>.<my-bbb>.<my-ccc>,在<my-ccc>中接收<my-aaa>与<my-bbb>发送的数据,当改变<my-aaa>或<my-bbb>所发送的数据时,<my-ccc>接收的数据也随之改变 html <body> <div id="box"> <my-aaa></

详解vue父组件传递props异步数据到子组件的问题

案例一 父组件parent.vue // asyncData为异步获取的数据,想传递给子组件使用 <template> <div> 父组件 <child :child-data="asyncData"></child> </div> </template> <script> import child from './child' export default { data: () => ({ as

vue父组件异步传递prop到子组件echarts画图问题踩坑总结

效果图: 大致思路:考虑到5张图都是折线图,所以准备用一个子组件承接echarts画图,然后父组件通过prop传递不同数据来展示不同的图 踩坑问题: 1.引入line子组件,画了5个元素,但是只显示一个 原因:id重复 解决方案:prop传递不同id名 2.父组件传递的数据在子组件报错 这里情况比较特殊,我用父组件数据data里面给demo数据的时候,子组件是拿得到数据的,图片正常显示,所以以为可以了,当换成从后台请求的数据后,发现子组件总是报错,data.count is not a func

Vue(5)- 子父级组件之间的数据传递

父组件 向 子组件 传递数据 1 Parent.vue 文件 2 3 <template> 4 <div> 5 <h2>Parent Component</h2> 6 <p> 7 <Child :ParentToChild="ParentToChildMsg" /> 8 </p> 9 </div> 10 </template> 11 12 <script> 13 im

Vue 父组件与子组件之间传值

一.父组件与子组件之间值传递步骤如下: 例如:我有一个父组件Myhome.vue 和一个子组件Header.vue 1.父组件调用子组件的时候,动态绑定属性值 <v-myheader :title="title"></v-myheader> 2.在子组件使用 props 来接受父组件传过来数据(props:['title']),如果是多个就定义多个属性就可以 完整代码如下: 1.Myhome.vue(父组件)代码如下: <template> <

vue父组件获取子组件的属性或方法

我遇到这样一个情况: 父组件代码片段: 1 <button @click="submit">提交</button> 2 <v-autoTextarea ref="autotext" placeholder="开始编辑..." class="content-input" fontSize="15px" 3 lineHeight="1.5" :value=&qu

Vue 父组件向子组件传值,传方法,传父组件整体

父子组件传值 1.父组件调用子组件时绑定属性,例如-> :title="title" 2.子组件中在props中声明title:props:['title','msg'] 3.就可以在子组件中引用title Tips:避免父子组件传值时命名冲突 父子组件传方法方式一样 1.父组件调用子组件时绑定属性,例如-> :run="run" 2.子组件中props中声明run:props:['title','msg','run'] 3.子组件中的button引用r

Vue 父组件循环使用refs调用子组件方法出现undefined的问题

1. 背景 最近前端项目遇到一个问题,我在父组件中使用了两个相同的子组件child,分别设置ref为add和update.其中A组件的功能是新增,也就是说在页面上A页面只有一个.而update组件是放在表格里的,表格中的每一行数据都有update组件.跟update组件并列还有一个删除按钮,每次删除完都会重新获取数据. 2.问题描述 界面第一次加载时我对表格的组件B进行操作的时候是没问题的,但是当我删除某一行的数据之后再点击B组件,出现了update组件变为undefined的问题. <el-t

vue组件子与父组件数据之间的传递

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>vue 子父组件间的数据传递</title> <script src='vue.js'></script></head><body> <script> // 全局组件 // Vue.component(