vue provide和inject小实例

复制代码
import Vue from 'vue'

const ChildComponent={
    template:`<div>chilid companet:{{data.value}}</div>`,
    inject:['yeye','data'],
    mounted(){
    }
}


const compoent={
    name:'comp',
    components: {
        ChildComponent
    },
    template:`<div> this is compoent {{text}}
      <input type="text" v-model.number="text">
      <child-component></child-component>
    </div>`,
    props:{
        active:{
            validator(value){
                return typeof value === 'boolean'
            }
        }
    },
    data(){
        return {
            text:0
        }
    }
}
// Vue.component('CompOne',compoent)
new Vue({
    el:'#root',
   /* provide:{//直接赋值是不能传递的,因为这个this对象还没有创建,跨阶层调用
        yeye:this,
        value:this.value
    },*/
    provide(){//所以要用方法的形式进行赋值,默认没有reactive的属性,
        const data={}
        Object.defineProperty(data,'value',{
            get:()=>this.value,//返回的是这里的value的实例的值
            enumerable:true
        })
       return {
           yeye:this,
           data
        }
    },
    components:{
        CompOne:compoent
    },
    data(){
        return {
           value:123
        }
    },
    template:`
        <div>
            <comp-one></comp-one>
          <input type="text" v-model="value">
        </div>    
    `,
})
复制代码

 

posted @   前端路远且长  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示