子组件挂载的时候,props传值,数据挂载命名:用驼峰命名法命名,在子组件在methods里才可以通过this.xx获取。
注意命名要规范。
父组件通过props传值给子组件,子组件在methods里要拿到父组件传递过来的数据有2种情况:
第一种:父组件传递的参数是固定的,data里面定义的参数,这时候在子组件通过this.xxx就可以获取到,但是要注意命名方式,如下:
父组件里:子组件在父组件挂载时绑定数据,注意前面要以“-”连接,后面要以驼峰规则命名
![](https://i-blog.csdnimg.cn/blog_migrate/3b3fd5ae6058b2c087f90a4ce5817246.png)
,data里面的数据命名
![](https://i-blog.csdnimg.cn/blog_migrate/94f2fbcb739ee82ec22ced08a48bc4b5.png)
子组件获取的时候:通过props接收
![](https://i-blog.csdnimg.cn/blog_migrate/69f63d23436ea24f0968f06d3b72f98b.png)
这样,在methods里就能通过this.userName获取到父组件的数据。
第二种情况:父组件传递的参数是动态改变的,这种在子组件里按照上面的方式是获取不到动态改变后的数据的。这种情况下也有2种解决方法(也许还有其他方法)
1、用v-if 定义一个flag,初始为false,在动态改变了username的时候flag设置为true,
父组件:
![](https://i-blog.csdnimg.cn/blog_migrate/c615594e185fdd3f54d2a0736ecc0a8f.png)
子组件:
![](https://i-blog.csdnimg.cn/blog_migrate/59f454dfeaa83714059b5a51d74ba248.png)
通过this.username就可以拿到动态改变后的数据
2、在子组件用watch监听数据的变化。
watch: { username:
function
(newVal,oldVal){ console.log(newVal,oldVal) } },