Vue-组件的嵌套

组件的嵌套

组件的嵌套也是开发中比较常见的方式

一个大组件里面有多个小组件,大组件一般称为父组件,小组件称为子组件

1 编写案例

首先定义一个school组件

提出新的需求:现在我想在school里面定义一个子组件(student)出现

首先创建student组件,如果我们把student和school组件一样定义在vm中,就平级了,体现不出来层级的感觉

可以看到,两个组件都是被vm包裹的

这时候就不能这么注册了,应该把子组件注册到父组件中

有点像套娃,如下图所示

但是这样有一个先后定义顺序问题,应该先定义子组件再定义父组件,不然就报错

所以应该把子组件放到前面,只有它准备就绪了,父组件才能使用

查看页面,通过开发者工具可以明确的看到层级关系

到了这里,就完成了基本的组件嵌套

2 补充

一般的开发中,都会定义一个叫app的组件(application的简称),它就是所有组件的父组件,它由vm直接管理

代码如下

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>初始vue</title>
    <!-- 引入vue.js -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <app></app>
    </div> 
</body> 
<script type="text/javascript">
    // 定义student组件
    const student={
         template:`
            <div>
                <h2>学生姓名:{
   
   {studentName}}</h2>
                <h2>学生年龄:{
   
   {age}}</h2>   
            </div>
        `,
        data(){
            return{
                studentName:'张三',
                age:'18'
            }
        },
    }
    // 定义school组件
    const school={
         template:`
            <div>
                <h2>学校名称:{
   
   {schoolName}}</h2>
                <h2>学校地址:{
   
   {address}}</h2>   
                <student></student>
            </div>
        `,
         data(){
            return{
                schoolName:'清华大学',
                address:'北京'
            }
        },
        // 注册子组件(局部)
        components:{
            student
        }
    }
    // 定义hello组件
    const hello=Vue.extend({
        template:`<h1>{
   
   {info}}</h1>`,
        data(){
            return {
                info:'你好!'
            }
        }
    })
    // 定义app组件它是全部组件的父组件,由vm直接管理
    const app=Vue.extend({
        template:
            `<div>
                <hello></hello>
                <school></school>
              </div>`
        ,
        components:{
            school,
            hello
        }
    })
    // 创建vm
     const vm=  new Vue({
        el:'#root',
        // 注册组件(局部)
        components:{
          app    
        }
    
    })
   
</script>

</html>

3 总结

在vue开发中,组件的嵌套也是会被经常使用到的,所以也应该掌握。

猜你喜欢

转载自blog.csdn.net/weixin_46713508/article/details/130955473