这里的标签child不是跟注册组件的child是同级吗?怎么是父组件了
求详细解释下父组件 子组件
谢谢
最近也是迷糊了这个问题,以下是我自己的理解,希望帮助到有同样困惑的朋友。
<div id="app">
<!--<root> 隐性的根组件,相对于注册的全局组件child来说,是父组件-->
<child msg="hello world"></child><!--child相对root来说是子组件,而 msg 这个变量是存在于父组件内的,应该属于父组件里的数据,虽然这个变量不是初始化就定义了的-->
<!--</root>-->
</div>
<script>
//注册一个全局组件,组件标签名为component
Vue.component('child', {
//组件构造器,此为一个对象,其中内容为多选项
props: ['msg'],//接收父组件传递的数据
template: '<span>{{msg}}</span>',
data(){return {val: 2};}, //这才是子组件里面的数据
});
//实例化Vue
new Vue({
el : '#app',
data : {val : 1}, //这个数据是初始化Vue实例就定义的
});
</script>
一个vue实例就是一个组件,这里叫a。 我们定义了一个组件之后把它放到另外一个vue实例中,另外的那个就叫b,然后我们就可以说a是b的子组件,因为a在b中使用,也可以看成a成了b的一个元素。。。。
那么哪来的父子组件传值?所谓的父向子就是 b vue实例中的data值传到了组件中使用。 子向父就是 把组件a中的data 传递到了a中。
父向子传值用prop,prop生成组件的属性,当它化生成一个子组件在a中使用的时候,可以通过直接在元素上控制属性,或者通过父实例中的data获取值来改变组件的属性值。
子组件向父组件传值 要用事件。 运用$emit,运用$emit来创建一个事件,把该属性值传到父组件中,父组件里要监听这个事件,通过这个事件来产生值的变化。
6 回答3.1k 阅读✓ 已解决
8 回答4.8k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.5k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
这里的标签 child 就是 vue 注册的组件,这本来就是子组件。
而这个子组件,其实是存在于一个父组件里的,只是例子中没有写出来,其实是应该这样子的。
child 是子组件,father是父组件,hello 和child 标签都存在父组件中,hello 通过 props 传进去给子组件使用。