Vue3前端开发,provide和enject的基础练习,跨层级传递数据

发布时间:2024年01月20日

Vue3前端开发,provide和enject的基础练习,跨层级传递数据!

声明:provide虽然可以跨层级传递,但是依旧是需要由上向下的方向传递。根传子的方向。


<script setup>
import {onMounted, ref} from 'vue'
import Base from './components/Base.vue'
import SetupDemo from './components/SetupDemo.vue'
import ReactiveDemo from './components/ReactiveDemo.vue'
import ComputedDemo from './components/ComputedDemo.vue'
import WatchDemo from './components/WatchDemo.vue'
import MutationsDemo from './components/MutationsDemo.vue'
import WatchDemo2 from './components/WatchDemo2.vue'
import LifeDemo from './components/LifeDemo.vue'
import ImageDemo2 from './components/ImageDemo2.vue'
import Parent from './components/Parent.vue'
import Child from './components/Child.vue'
import TestCom from './components/TestCom.vue'
import Middle from './components/Middle.vue'
import {provide} from 'vue'
const price = ref(49)
const userInfo = ref({name:'admin',age:24})
provide('price-key',price)
provide('userinfo-key',userInfo)
const btnHandle = ()=>{
  console.log('触发了根组件的方法')
  price.value++
}
provide('btn-key',btnHandle)
</script>
<template>

  <h3>入口文件</h3>
  <Middle />
</template>

这个是入口组件的内容,我们调用了一个中间组件Middle.vue。


<script setup>
import Three from './Three.vue';
</script>
<template>
    <h2>Midlle vue</h2>
    <Three />
</template>

这个是中间组件的内容,我们调用了一个三级组件Three.vue.


<script setup>
import { inject } from 'vue';

const userInfo = inject('userinfo-key')
const price = inject('price-key')
const btnHandle = inject('btn-key')

</script>
<template>
    <h4>Three vue</h4>
    <p>车厘子单价{{ price }}</p>
    <ul>
        <li v-for="(item,index) of userInfo" :key="index">{{ item }}</li>
    </ul>
    <hr />
    <button @click="btnHandle">车里单价自增1</button>
</template>

这个是第三级组件Three.vue的内容。

我们在这里,可以使用enject来方便的接收来自根组件的数据信息。

而且我们可以接收来自 父组件的方法。实现对父组件数据的修改效果。

如图,我们确实修改了车厘子的单价。


车厘子单价默认是49.我们点击按钮触发了根组件的方法,修改了2次单价。变成了51元。

文章来源:https://blog.csdn.net/yrldjsbk/article/details/135715915
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。