我是靠谱客的博主 英勇大米,最近开发中收集的这篇文章主要介绍全局组件与局部组件,组件父传子,属性验证&默认属性,组件子传父,组件ref,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

解释:
1. 父传子 是按 自定义属性 传 比如(:myshow)
2. 子传父 是按 自定义点击事件 传 比如 (@clickshow)


一,全局组件与局部组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    // 引入vue.js 文件
    <script src="../js/vue.js"><script>
    <style>
    .app{
    	margin-top: -10px;
        margin-left: -10px;
     }
    <style>
</head>
<body>
    <div class="app">
    	<search></search>
    <div>
    <script>
    // 全局组件
    // component 组件   search 自定义组件名称
    Vue.component("search",{
    template:`<section style="width: 100vw; 
            height: 30px;
            background-color: antiquewhite;
            display: flex;
            justify-content: space-between;
            align-items: center;">
            
    <button @click="leftclick"> < </button>
    <h1>标题{{num}}</h1>
    <button @clic="reghtclick"> + </button>
    
    <local></local>
    
    </section>`,
    methods:{
    	leftclick(){
    	console.log("left")
    	},
    	reghtclick(){
    	console.log("reght")
        }
     },
    data(){
      return{
       num:1111
      }
    },
    // 局部组件
    component:{
    	"search":{
    	template:`<div>我是局部组件</div>`
    	},
    	methods:{
		// 方法
        }
    }
    })
    new Vue(){
    	el:".app",
    	data(){
         return{
         
         }
        }
    }
    <script>
</body>
</html>

二,组件父传子

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js//vue.js"></script>
    <style>
        /* .app{
            background-color: antiquewhite;
        } */
    </style>
</head>

<body>
    <div class="app">
        <thetitle myname="电影" :myshow="false"></thetitle>
        <br>
        <thetitle myname="剧场" :myshow="true"></thetitle>
    </div>

    <script>
        
        Vue.component("thetitle", {
            // 父传子 
            // 自定义一个 myname 用于传参
            // 自定义一个 myshow 用于显示与隐藏
            props:["myname", "myshow"],
            template: `
            <section style="background-color: antiquewhite;">
                <button> < </button>
                <span>{{myname}}</span>
                <button v-show="myshow"> + </button>
            </section>
            `
        })
        new Vue({
            el: ".app",
            data() {
                return {

                }
            }
        }) 
    </script>
</body>

</html>

三,属性验证&默认属性

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js//vue.js"></script>
    <style>
        /* .app{
            background-color: antiquewhite;
        } */
    </style>
</head>

<body>
    <div class="app">
        <thetitle myname="电影" :myshow="false"></thetitle>
        <br>
        <thetitle myname="剧场" :myshow="false"></thetitle>
    </div>

    <script>
        
        Vue.component("thetitle", {
            // 父传子 
            // 自定义一个 myname 用于传参
            // 自定义一个 myshow 用于显示与隐藏
            // props:["myname", "myshow"],

            // 属性验证&默认属性
            props:{
                myname:{
                    // type 类型  String 字符串 
                    type:String,
                    // default 默认的 
                    default:''
                },
                myshow:{
                    // type 类型 Boolean 布尔
                    type:Boolean,
                    // default 默认的 
                    default:true
                }
            },

            template: `
            <section style="background-color: antiquewhite;">
                <button> < </button>
                <span>{{myname}}</span>
                <button v-show="myshow"> + </button>
            </section>
            `
        })
        new Vue({
            el: ".app",
            data() {
                return {

                }
            }
        }) 
    </script>
</body>

</html>

四,组件子传父

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div class="app">
        <navbar @mycustom="myporps"></navbar>
        <sidebar v-show="inshow"></sidebar>
        
    </div>

    <script>
        // 标题栏
        Vue.component("navbar",{
            template: `
             <div style="background-color: bisque;">
                <button @click="myclick"> ⁜ </button>
                <span>电影剧场</span>
             </div>
            `,
            methods:{
                myclick(){
                    this.$emit('mycustom',"空轻轻");
                }
            }
        })

        // 侧边栏

        Vue.component("sidebar",{
            template:`
              <ul style="width: 200px;
                          height: 800px;
                          background-color: aquamarine;">
                <li>1111</li>
                <li>2222</li>
                <li>3333</li>
                <li>4444</li>
                <li>5555</li>
                <li>6666</li>
              </ul>
            `
        })
        new Vue({
            el:".app",
            data(){
                return{
                    inshow:true
                }
            },
            methods:{
                myporps(data){
                    console.log("子传父",data)
                    this.inshow = !this.inshow
                }
            }
        })
    </script>
</body>
</html>

五,组件ref

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div class="app">
        <button @click="han">$</button>
        <navbar ref="myid"></navbar>
    </div>

    <script>
        Vue.component("navbar",{
            template: `<div>
                  {{myname}}
                </div>`,
            data(){
                return{
                    myname:1111111111
                }
            }
        })
        new Vue({
            el:".app",
            data(){
                return{

                }
            },
            methods:{
                han(){
                    console.log(this.$refs.myid.myname="2222222222")
                }
            }
        })
    </script>
</body>

</html>

最后

以上就是英勇大米为你收集整理的全局组件与局部组件,组件父传子,属性验证&默认属性,组件子传父,组件ref的全部内容,希望文章能够帮你解决全局组件与局部组件,组件父传子,属性验证&默认属性,组件子传父,组件ref所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部