Vue教程39--组件详解(三)

100 阅读1分钟

父组件和子组件

  • 在前面我们看到了组件树:

    • 组件和组件之间存在层级关系
    • 而其中一种非常重要的关系就是父子组件的关系
  • 我们来看通过代码如何组成的这种层级关系:

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
 </head>
 <body>
 ​
 <div id="app">
     <cpn2></cpn2>
 </div>
 ​
 <script src="../vue.js"></script>
 ​
 <script>
     //子组件
     const cpnC1 = Vue.extend({
         template:`
             <div>
                 <h2>我是标题1</h2>
                 <p>我是内容 哈哈哈哈哈</p>
             </div>`
     })
     
     //父组件
     const cpnC2 = Vue.extend({
         template:`
             <div>
                 <h2>我是标题2</h2>
                 <p>我是内容2 呵呵呵呵呵呵呵呵</p>
                 <cpn1></cpn1>
             </div>`,
         components:{
             cpn1:cpnC1
         }
     })
 ​
     //可以看作是一个默认的组件root
     const app = new Vue({
         el:"#app",
         data:{
             message:"hello world"
         },components:{
             cpn2:cpnC2
         }
     })
 </script>
 </body>
 </html>

效果展示

  • 父子组件错误用法:以子标签的形式在Vue实例中使用
    • 因为当子组件注册到父组件的components时,Vue会编译好父组件的模块
    • 该模板的内容已经决定了父组件将要渲染的HTML(相当于父组件中已经有了子组件中的内容了)
      • 在编译的过程其实就是模板代码替换的过程
      • 现在指定的父组件中进行查找,没有在找全局组件
    • 是只能在父组件中被识别的
    • 类似这种用法,是会被浏览器忽略的

image-20210821171520203.png