首页 > 其他分享 >组合式api-跨层级组件通信provide和inject

组合式api-跨层级组件通信provide和inject

时间:2023-08-12 15:22:29浏览次数:38  
标签:const provide money money2 api inject 组件

vue2的provide和inject:https://v2.cn.vuejs.org/v2/api/#provide-inject

主要作用:

跨层级传递数据(响应和非相应数据都可以)、方法(函数),顶层可以跨N层传递数据和方法给子孙组件调用。

使用provide和inject可以在不太复杂的场景下,不使用状态管理(vuex、pinia)来解决组件通信问题。

使用provide提供数据,inject接收数据

测试效果:

使用provide提供方法、函数

应用场景:

子组件即便拿到顶层组件的数据,也无法修改,此时就可以使用provide提供方法,将顶层组件的方法传递给任意底层组件,那么底层组件就可以调用顶层组件的方法,从而实现修改顶层组件中的数据。

顶层组件代码:

<script setup>
import SonA from "@/compon/SonA.vue";
import {provide, ref} from "vue";

const money = ref(100)
const money2 = ref(100)
const changeMoney = (newMoney) => {
  money.value -= newMoney
}
// 1. 使用provide函数提供提供需要传递的数据
// 注意:provide可以传递普通数据(非响应式),也可以传递响应式数据,
//      money是ref函数返回的响应式对象,money.value是其中值(非响应式)
//      当传递响应式对象时,顶层组件的数据改变,下层组件中inject的数据也会改变,否则相反。
provide('money', money)
provide('money2', money2.value)  // 虽然money2是响应式数据,但是我传的时候是传.value(非相应),因此money2改变值后,下层的组件不会改变。
// 还可以传递方法
provide('changeMoney', changeMoney)
</script>

<template>
  <div>
    我是父组件
    <SonA/>
  </div>
</template>

son代码:

<script setup>
import GrandSon from "@/compon/GrandSon.vue";
import {inject} from "vue";
const money = inject('money');
</script>

<template>
  <div class="SonA">
    我是SonA, 爸爸的钱 {{ money }}
    <GrandSon></GrandSon>
  </div>
</template>

grandSon代码:

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

const money = inject('money');
const money2 = inject('money2');

const changeMoney = inject('changeMoney');

</script>

<template>
  <div class="grandSon">
    我是孙子, 爷爷的钱: {{ money }}
    <div>
      我是孙子, 爷爷的钱2(非响应式数据): {{ money2 }}
    </div>
    <button @click="changeMoney(10)">花钱-10</button>
  </div>
</template>

测试效果:

标签:const,provide,money,money2,api,inject,组件
From: https://www.cnblogs.com/juelian/p/17624858.html

相关文章

  • 细谈商品详情API接口设计
    当我们构建电商网站或应用时,常常需要获取淘宝商品的详细信息。为了实现这个功能,我们可以利用淘宝提供的开放平台API接口来获取商品数据。在这篇文章中,我们将学习如何设计一个商品详情API接口,并提供相应的代码示例。首先,我们需要注册淘宝开放平台账号,并创建一个新的应用来获取API访......
  • 细谈商品详情API接口设计
    当我们构建电商网站或应用时,常常需要获取淘宝商品的详细信息。为了实现这个功能,我们可以利用淘宝提供的开放平台API接口来获取商品数据。在这篇文章中,我们将学习如何设计一个商品详情API接口,并提供相应的代码示例。首先,我们需要注册淘宝开放平台账号,并创建一个新的应用来获取API......
  • go项目实现mysql接入以及web api
    创建go项目,并在go项目中接入mysql,将mysql的配置项单独整理放到一个胚子和文件中,支持项目启动时,通过加载配置文件中的值,然后创建数据库连接。之后使用net/http相关的库,创建路由,并在路由中通过不同的http方法,实现mysql连接的test数据库中users表的增删改查的webapi1.在ide......
  • 一文详解Apipost数据模型功能
    在Apipost数据模型中用户可以预先创建多个数据模型,并在API设计过程中重复利用这些模型来构建API创建数据模型在左侧导航点击「数据模型」-「新建数据模型」在右侧工作台配置数据模型参数引入数据模型在API设计预定义响应期望下点击引用数据模型,并选择需要导入的数据模型即可将创建......
  • 常用类和基础API(二)
    1、在jdk8.0之前的日期时间的使用1.1、常用方法:longbegin=System.currentTimeMillis();//获取当前系统时间对应的毫秒值Datedate=newDate();System.out.println(date); //获取当前时间和日期1.2、SimpleDateFormat:用于日期时间的格式化和解析......
  • Android应用程序组件Content Provider应用实例
     上文简要介绍了Android应用程序组件ContentProvider在应用程序间共享数据的原理,但是没有进一步研究它的实现。本文将实现两个应用程序,其中一个以ContentProvider的形式来提供数据访问入口,另一个通过这个ContentProvider来访问这些数据。本文的例子不仅可以为下文分析ContentP......
  • python调用zabbix api接口实时展示数据
    zabbixapi接口来进行展示。经过思考之后,计划获取如下内容:  1、  获得认证密钥  2、  获取zabbix所有的主机组  3、  获取单个组下的所有主机  4、  获取某个主机下的所有监控项  5、  获取某个监控项的历史数据  6、  获取某个监控项的......
  • 商品详情接口设计:使用API调用获取淘宝商品数据的完整方案
    在如今的电商时代,获取商品的详细信息是实现商业化应用的基础。本文将详细介绍如何通过API调用来获取淘宝商品数据,并提供一个完整的商品详情接口设计方案,包括代码示例。开发人员可以根据此方案快速实现商品详情功能,提升用户体验。准备工作:在开始之前,我们需要确保已经申请并获得淘宝......
  • 商品详情接口设计:使用API调用获取淘宝商品数据的完整方案
    ​在如今的电商时代,获取商品的详细信息是实现商业化应用的基础。本文将详细介绍如何通过API调用来获取淘宝商品数据,并提供一个完整的商品详情接口设计方案,包括代码示例。开发人员可以根据此方案快速实现商品详情功能,提升用户体验。准备工作:在开始之前,我们需要确保已经申请并获......
  • frida注入脚本持久化从frida-net到frida-inject
    采集APP数据的时候发现需要对参数进行加密,为了简单就没有做算法还原,就想尝试用RPC的方式直接调用最先开始用frida-net,这个方案有个问题是必须用USB连接手机,方案也能跑通先下载frida-net gitclone  https://github.com/frida/gumjs-net.git本机的需要nodejs环境  下载......