当前位置: 首页 > news >正文

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

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元。

http://www.lryc.cn/news/284330.html

相关文章:

  • Python 循环结构值while循环
  • MSSQL-识别扩展extended event(扩展事件)中的时间单位
  • vue3中l和vue2中v-model不同点
  • 使用 Swift 代码优化项目编译速度
  • 基于springboot+vue的社区团购系统(前后端分离)
  • three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera
  • Golang 搭建 WebSocket 应用(七) - 性能、可用性
  • Qt 状态机框架:The State Machine Framework (一)
  • 高通平台学习一
  • Python爬虫时被封IP,该怎么解决?四大动态IP平台测评
  • 积分梳状滤波器CIC原理与实现
  • 【项目管理】CMMI-原因分析与解决过程(CAR)
  • 【设计模式】文件目录管理是组合模式吗?
  • 利用appium自动控制移动设备并提取数据
  • day22_236二叉树最近公共祖先_235二叉搜索树(最近公共祖先_701插入一个节点_450删除一个节点)
  • OpenSource - 工具管理器easy-manager-tool
  • Laravel7 + easyWeChat 实现微信公众号支付功能
  • Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南
  • 16k+ start 一个开源的的监控系统部署教程
  • Mermaid使用教程(绘制各种图)
  • OpenAI/ChatGPT Plus 支持的虚拟卡有哪些
  • ARM多核调度器DSU
  • vue解决部署文件缓存方式
  • 游戏开发中的噪声算法
  • CodeReview 小工具
  • UE5 C++ Slate独立程序的打包方法
  • 探索设计模式的魅力:一篇文章让你彻底搞懂建造者模式
  • Facebook广告投放指南,如何运营多个Facebook广告账户不被封?
  • 音乐人声分离工具:极简的人声和背景音乐分离工具
  • Go语言基础快速上手