首页 > 编程知识 正文

provide的用法和短语,providing用法

时间:2023-05-03 08:12:54 阅读:106560 作者:2625

首先亲子组件的参与可以通过props和emit实现,但当组件层次结构较深时,props和emit不起作用。 vue为了解决这个提出了Provide/Inject。 我知道这个,但是一直没用。 最近遇到问题,踩了几个洞,所以在这里记录

备注:

我正在安装vue3.x。 v-model使用的是3.x的语法。

2.x和3.x使用方法一致。 我这里用2.x写

通用知识基本用法

provide选项必须是对象或返回对象的函数

inject选项必须是字符串数组或对象。 对象的[key]是本地绑定名称

provide 和 inject 绑定并不是可响应的。这是刻意为之的。

代码执行顺序

数据提供-创建-装载

基本代码

son在这里作为一个级别工作,主要使用两个组件: grandpa和grandson

//grandpa.vuetemplatedivh3style=' margin-bottom 336020 px '爷爷组件/h3el-buttontype=' primary ' @ click=' look detail -儿子的组件----sonv-model : visible=' opendialog '/son/detail export default { components : { son },data(}{return{message:'aa ',openDialog: false,} );methods : { look detail () } { this.opendialog=true; (,)、); /script//son.vuetemplatedivel-dialogv-model=' visible ' title='父组件' width=' 50 % ' append-to-body @ close -后代组件Grandson/div/templatescript//孙子组装体importgrandsonfrom './gra and son export default { components : { grandson,},prop default: false,}、emault (,methods: ) closedialog ) (this.$emit )、update:visible )、false );lookDetail () { this.openDialog=true; (,)、);/script//grandson.vuetemplatedivel-dialogv-model=' visible ' title='孙组件' width=' 30 % ' @ close=' close visible:{type:boolean,default: false,}、emit:['update360]、methods: { closeDialog () } this.$ /script图:

传递基础用法:字符串

很容易修改组件

//grandpa.vueexportdefault { components : { son }, provide:{ grandpaMsg: '哈哈' }//grandson.vuetemplatedivel-dialogv-model=' visible ' title='孙组件' width=' 30 % ' @ close=' close dialog ' ditle visible:{type:boolean,default: false,},inject:['granddanddard,}

中级用法

传递字符串是没什么用的。 如果要传递data属性呢? 很容易修改组件

//grandpa.vue components : { son }、provide : { grandpa msg : this.message }、data{return}message3360 )

使用data的参数时,必须这样写

//grandpa components: { Son },provide((return ) grandpamsg:this.message ),结果:

高级用法

我从一开始就说这不是回应式,让我们简单看看

H3 style=' margin-bottom : 20px '爷爷的组件/h3el-buttontype=' primary ' @ click=' look detail '显示/El-button

那么如何成为应答式,再简单修改一下吧

//grandpaprovide((return ) grandpamsg: )=this.message } } ),//grandson El-dialogv-model=' visible ' ti ibib

展开:可以直接告诉你this的过去。 这样,孙子程序集就可以得到爷爷程序集的实例对象。 这个方法也是响应性的

provide () return (grandpa msg : this )、

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。