zoukankan      html  css  js  c++  java
  • Vue自定义组件

    Vue中自定义组件分为:

      全局自定义组件:在任意一个通过new关键字创建的vue实例中都可以使用。

      局部自定义组件:只能在当前实例中使用

      注意:所有的组件都只能渲染一个根标签,可以在根标签里嵌套内容。

    全局自定义组件的具体用法:

      组件的形式就是以标签的形式来使用,相当于自定义一个标签

    <div id="app">
        <test-component></test-component>
    </div>

      需要在Vue的原型中的方法定义一个自定义的组件(标签)

      语法:Vue.component("自定义组件名(也可以叫自定义标签名)",{

      template:``, //自定义组件内容(模板)

    })

    Vue.component("test-component",{
       template:`<div>这是自定义的一个标签</div>` 
    })
     var vm = new Vue({
       el:"#qpp",
       data:{
        }  
    
    })

    注意:组件中的内容参数在组件自己内部,不在Vue实例中

    参数以函数的返回值的形式来表示的,返回的是一个对象

    Vue.component('test-component',{   //组件的信息
                data(){  
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                    </div>
                `
            })

    局部自定组件的使用

      局部自定义组件的使用,语法和全局自定组件相同但是写的位置不同,写在当前Vue实例中,

      语法:

     components : { 
                  组件名称 : {
                        template : `<div>    //组件的自定义模块            
                            <h1>这是一个局部的组件</h1>
                        </div>`
                    }
                }
    new Vue({
                el : "#app", //模板
                data : {   //所有的数据都在这里
                    msg : 'hello world'
                },
                components : {  //自定义组组件,(局部的哟)
                    'demo-component' : {
                        template : `<div>                
                            <h1>这是一个局部的组件</h1>
                        </div>`
                    }
                }
            })

    注意:自定义组件中的数据,也是在自定义组件中定义的data当中,也是以函数返回值得形式表示,也不嗯给你拿Vue实例中的data。

            new Vue({
                el : "#app",
                data : {
                    msg : 'hello world'
                },
                components : {
                    'demo-component' : {
                data:function(){
                  return {
                  msg:"abc",
                }
                },
    template : `
    <div> <h1>这是一个局部的组件</h1>     <span>{{ msg }}</span> </div>` } } })

     组件之间的嵌套

      全局组件嵌套在局部组件内,全局组件之间的嵌套,嵌套的话就之间嵌套在要嵌套的组件template模板内,因为组件只能渲染一个根标签,所以嵌套的方式就和html中标签的嵌套方式一样,标签中套标签。

     

     全局组件嵌套在局部组件内

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            {{ msg }}
            <hr>
            <!-- 组件的使用,就相当于自定义的标签,组件的名称就可以当成一个自定义的标签 -->
            <li-component></li-component>
            <demo-component></demo-component>
        </div>
        <script>
            // 全局的组件
            Vue.component('test-component',{   //组件的信息
                data(){
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                        <li-component></li-component>
                    </div>
                `
            })
            Vue.component('li-component',{
                template : "<li>test - li - 01</li>"
            })
            new Vue({
                el : "#app",
                data : {
                    msg : 'hello world'
                },
                components : {
                    'demo-component' : {  //这是一个局部组件
                        template : `<div>                
                            <h1>这是一个局部的组件</h1>
                            <test-component></test-component> //这是一个全局组件
                            <li-component></li-component> //这也是一个全局组件
                        </div>`
                    }
                }
            })
        </script>
    </body>
    </html>

    全局组件之间的嵌套

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <demo-component></demo-component> //这是第一个全局自定义组件标签
        </div>
        <script>
            // 全局的组件
            Vue.component('test-component',{   //这是第一个全局组件
                data(){
                    return {
                        msg : "test"
                    }
                },
                template : `
                    <div>
                        <div>全局</div>
                        <p>组件</p>
                        <h1> {{ msg }} </h1>
                        <li-component></li-component> //这是第二个全局组件标签
                    </div>
                `
            })
            Vue.component('li-component',{//这是第二个全局组件
                template : "<li>test - li - 01</li>"
            })
            new Vue({
                el : "#app",
            })
        </script>
    </body>
    </html>

     



  • 相关阅读:
    LeetCode153 Find Minimum in Rotated Sorted Array. LeetCode162 Find Peak Element
    LeetCode208 Implement Trie (Prefix Tree). LeetCode211 Add and Search Word
    LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number
    LeetCode191 Number of 1 Bits. LeetCode231 Power of Two. LeetCode342 Power of Four
    LeetCode225 Implement Stack using Queues
    LeetCode150 Evaluate Reverse Polish Notation
    LeetCode125 Valid Palindrome
    LeetCode128 Longest Consecutive Sequence
    LeetCode124 Binary Tree Maximum Path Sum
    LeetCode123 Best Time to Buy and Sell Stock III
  • 原文地址:https://www.cnblogs.com/Godfather-twq/p/11815359.html
Copyright © 2011-2022 走看看