自己のVueの最初の04日間

自己のVueの最初の04日間

コンポーネントベースの開発

地方議会

<div id="app"></div>

<script>

<!--    自定义局部组件-->
    var MyHeader = {
        template: `
                <div>我是Header</div>
            `
    }

    var MyBody = {
        template: `
                <div>我是Body</div>
            `
    }

    new Vue({
        el: '#app',
        //注册局部组件
        components: {
            MyHeader, MyBody
        },
        template: `
                <div>
                    <my-header></my-header>
                    <my-body></my-body>
                </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
复制代码

図1に示すように、デフォルトのKVに等しいキーと値のペアを使用することなく、登録アセンブリ現地時間、

2、実際には、シンタックスシュガーを使用し、完全な文言が実際にあるときに、ここでは地元のアセンブリを作成

var MyFooter = Vue.extend({
        template: `
                <div>我是MyFooter</div>
            `
    })
复制代码

グローバル・コンポーネント

Vue.component('MyLow', {
        template: `
        <div>我是MyLow</div>
    `
    })
    
    new Vue({
        el: '#app',
        //注册局部组件
        components: {
            MyHeader, MyBody, MyFooter
        },
        template: `
                <div>
                    <my-header></my-header>
                    <my-body></my-body>
                    <my-footer></my-footer>
                    <my-low></my-low>
                </div>
        `,
        data: function () {
            return {}
        }
    })
复制代码

グローバルコンポーネント、宣言することなく使用

完全なコード

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件化开发</title>
    <script src="../vue.js"></script>
</head>
<body>
<div id="app"></div>

<script>

    <!--    自定义局部组件-->
    var MyHeader = {
        template: `
                <div>我是Header</div>
            `
    }

    var MyBody = {
        template: `
                <div>我是Body</div>
            `
    }

    var MyFooter = Vue.extend({
        template: `
                <div>我是MyFooter</div>
            `
    })

    //全局组件
    Vue.component('MyLow', {
        template: `
        <div>我是MyLow</div>
    `
    })

    new Vue({
        el: '#app',
        //注册局部组件
        components: {
            MyHeader, MyBody, MyFooter
        },
        template: `
                <div>
                    <my-header></my-header>
                    <my-body></my-body>
                    <my-footer></my-footer>
                    <my-low></my-low>
                </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
</body>
</html>
复制代码

スロットスロット、REF、親

例えばスロットの

<script>

    var Parent={
        template: `
            <div>我是父组件<slot></slot></div>
        `
    }


    new Vue({
        el: '#app',
        components:{
            Parent
        },
        template: `
            <div>
                <parent>
                    <div>我是插槽内容</div>
                </parent>
            </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
复制代码

親コンポーネントが存在しない場合はslot、その使用中のとき<div>我是插槽内容</div>にレンダリングされることはありません

スロットにも名を指定することができます

var Parent={
        template: `
            <div>我是父组件<slot name="hello"></slot></div>
        `
    }


    new Vue({
        el: '#app',
        components:{
            Parent
        },
        template: `
            <div>
                <parent>
                    <div>我是插槽内容</div>
                    <div slot="hello">我是插槽内容2</div>
                </parent>
            </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
复制代码

指定された名前の内容がレンダリングされました

$ refを

<script>

    var Child = {
        template: `
            <div>我是子组件</div>
        `
    }

    var Parent = {
        template: `
            <div>
                我是父组件
                <!--为子组件取名-->
                <child ref="childs"></child>
            </div>
        `,
        components: {
            Child
        },
        mounted:function(){
        <!--获取到子组件的相关信息-->
            console.log(this.$refs.childs.$el);
        }
    }


    new Vue({
        el: '#app',
        components: {
            Parent
        },
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
复制代码

$親

使用する場合に$refs得られた情報のサブコンポーネントは、
我々が使用することができ$parent、親コンポーネントに取得した情報を

var Child = {
        template: `
            <div>我是子组件</slot></div>
        `,
        created:function(){
            console.log(this.$parent);
        }
    }
复制代码

通信コンポーネント

  • 親子通信コンポーネント

  • 非親子通信コンポーネント

息子の父

<script>

    var Child = {
        //第三步:子组件使用父组件传递过来的数据
        template: `
            <div>我是子组件:{{sendChild}}</div>
        `,
        //第一步:子组件接收父组件参数的名称
        props:['sendChild']
    }

    var Parent = {
        //第二步:通过特定名称的属性,传递数据给子组件
        template: `
            <div>
                我是父组件
                <child sendChild="父组件给的"></child>
            </div>
        `,
        components: {
            Child
        }
    }


    new Vue({
        el: '#app',
        components: {
            Parent
        },
        template: `
            <div>
                <parent>
                </parent>
            </div>
        `,
        data: function () {
            return {}
        }
    })
</script>
复制代码

親の子伝送

非サンズコンポーネント

<script type="text/javascript">

		Vue.prototype.$bus=new Vue()
		var MyHeader={
			template:`
				<div>
				我是头部
				{{ headermsg }}
				</div>
			`,
			data(){
				return {
					headermsg:'我是头部的信息'
				}
			},
			created(){
				// var self=this
				// self.$bus.$on('sending',function(val){
				// 	self.headermsg=val
				// })
				this.$bus.$on('sending',val=>{
					this.headermsg=val
				})
			}
		}
		var MyBody={
			template:`
				<div>我是身体</div>
			`,
		}
		var MyFooter={
			template:`
				<div>我是底部<button @click='sendhead'>我要跟头部通信</button></div>
			`,
			methods:{
				sendhead(){
					this.$bus.$emit('sending','我是底部的数据')
				}
			}
		}
		new Vue({
			el:'#app',
			components:{
				MyHeader,
				MyBody,
				MyFooter
			},
			template:`
				<div>
					<my-header></my-header><hr>
					<my-body></my-body><hr>
					<my-footer></my-footer>
				</div>
			`,
			data(){
				return {}
			},
		})
	</script>
复制代码

Vueのライフサイクル

おすすめ

転載: blog.csdn.net/weixin_34128501/article/details/91399561