在vue3.x中使用provide
dearweb
发布:2021-08-09 17:34:34阅读:
在setup中使用provide时,我们首先从vue显示导入provide的方法,这使我们能够调用provide时来定义每个provide。
provide函数允许你通过两个参数定义provide:
provide的name(<string>类型):
provide的value
在父组件中声明:
//第一种写法
// provide:{
// title:'我是provide'
// },
//第二种写法
provide(){
return{
title:'我是provide方法'
}
},在子组件中注册和使用
<template>
<div class='home'>
{{title}} <!--我是provide方法-->
</div>
</template>
<script>
// import {} from 'vue'
export default {
name: 'home',
inject:["title"],
data(){
return {
msg:''
}
},
}
</script>以上的操作,在vue2.x版本中是无法实现数据的响应式修改的,在vue3.x中我们借助setup可以实现响应式这一原理。
父组件代码实例
<template>
<!-- vue3.x -->
<div class='home'>
{{title}}
<input text="" v-model="title"/>
<Provide></Provide>
</div>
</template>
<script>
import Provide from './provide'
import {ref, provide,reactive } from 'vue'
export default {
name: 'home',
setup(){
let title = ref('app根组件的title')
// 如果是对象就用 reactive 方法
// const obj = reactive()
provide('title',title)
return{
title
}
},
components:{
Provide
},
data(){
return {
msg:'wuhan'
}
},
}
</script>子组件代码实例
<template>
<!-- vue3.x -->
<div class='home'>
{{title}}
</div>
</template>
<script>
import {inject} from 'vue'
export default {
name: 'home',
setup(){
// inject 里面的值的名字与父组件名字相同
let title = inject('title')
return{
title
}
},
data(){
return {
msg:'ssss'
}
},
}
</script>
<style lang='less' scoped>
</style>上面的方法就是vue3.x利用setup实现provide的响应式父子间传值的方式。确实相比于vue2.x传值方便太多了。加油,小伙伴们!
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧