vue中子组件的methods中获取到props中的值方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中子组件的methods中获取到props中的值方法相关的知识,希望对你有一定的参考价值。

参考技术A 这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可
例如:
父组件中:

子组件中:

这种情况下,子组件的methods中想要取到props中的值,直接使用this.chartData即可

但是有写情况下,你的chartData里面的值并不是固定的,而是动态获取的,这种情况下,你会发现methods中是取不到你的chartData的,或者取到的一直是默认值
比如下面这个情况:
父组件中:

此时子组件的methods中使用this.chartData会发现是不存在的(因为为空了)

这情况我是使用watch处理

监听chartData的值,当它由空转变时就会触发,这时候就能取到了,拿到值后要做的处理方法也需要在watch里面执行

Vue.js2.0中子组件修改父组件传递过来的props,并不影响父组件的原始数据

参考技术A vue2.0中,子组件中不能修改父组件的状态,否则在控制台中会报错。
但是经我测试发现,这仅限于props为非数组及对象等引用类型数据,譬如字符串,数字等
如果props是对象或数组的话,在子组件内修改props的话,父组件是不会报错的。
那么要怎么解决修改props传的值而不污染父组件的值:
1,可以使用ES6提供的Object.assign(, prop)的返回值就是一个全新的对象,操作这个新对象不会影响旧对象。如果不用ES6就自己递归实现拷贝器
2,可以给对象重新赋值:(给对象里的每一项重新赋值)

以上是关于vue中子组件的methods中获取到props中的值方法的主要内容,如果未能解决你的问题,请参考以下文章

在vue中子组件修改props引发的对js深拷贝和浅拷贝的思考

Vue.js2.0中子组件修改父组件传递过来的props,并不影响父组件的原始数据

vue中子组件间接修改父组件传递过来的值

vue中子组件触发父组件的方法

vue-父子组件传值

vue 中子组件或者公共组件向上一级传递数据 $emit的使用