vue3+ts 依赖注入provide inject的用法

 更新时间:2023年11月26日 16:28:30   作者:你的美,让我痴迷  
vue3中引入新的组件传值方式,就是provide/inject依赖注入模式,本文主要介绍了vue3+ts 依赖注入provide inject的用法,感兴趣的可以了解一下

父级:

<template>
  <div>
    <h1>App.vue (爷爷级别)</h1>
    <label>
      <input type="radio" v-model="colorVal" value="red" name="color" />
      红色
    </label>
    <label>
      <input type="radio" v-model="colorVal" value="pink" name="color" />
      粉色
    </label>
    <label>
      <input type="radio" v-model="colorVal" value="yellow" name="color" />
      黄色
    </label>
    <div class="box"></div>
    <hr />
    <provideAVue></provideAVue>
  </div>
</template>

<script setup lang="ts">
import { ref, provide } from "vue";
import provideAVue from "./components/provideA.vue";
const colorVal = ref<string>("red");
provide("color", colorVal);
</script>

<style>
.box {
  height: 50px;
  width: 50px;
  border: 1px solid #ccc;
  background: v-bind(colorVal);
}
</style>

儿子级别:

<template lang="html">
  <div>
    <h1>provideA.vue(儿子级别)</h1>
    <div class="box"></div>
    <hr />
    <provideBVue></provideBVue>
  </div>
</template>
<script lang="ts" setup>
import { inject } from "vue";
import type { Ref } from "vue";
import provideBVue from "./provideB.vue";
const color = inject<Ref<string>>("color");
</script>
<style lang="scss">
.box {
  width: 50px;
  height: 50px;
  border: 1px solid #ccc;
  background: v-bind(color);
}
</style>

孙子级:

<template lang="html">
  <div>
    <h1>provideA.vue(孙子级别)</h1>
    <div>
      <button @click="change">修改 provide的值 yellow</button>
    </div>
    <div class="box"></div>
    <hr />
  </div>
</template>
<script lang="ts" setup>
import { inject } from "vue";
import type { Ref } from "vue";
const color = inject<Ref<string>>("color");
const change = () => {
  color!.value = "yellow";
};
</script>
<style lang="scss">
.box {
  width: 50px;
  height: 50px;
  border: 1px solid #ccc;
  background: v-bind(color);
}
</style>

效果图

到此这篇关于vue3+ts 依赖注入provide inject的用法的文章就介绍到这了,更多相关vue3 ts 依赖注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解vue使用插槽分发内容slot的用法

    详解vue使用插槽分发内容slot的用法

    这篇文章主要介绍了vue使用插槽分发内容slot的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Element树形控件el-tree懒加载并设置默认展开和选中的效果

    Element树形控件el-tree懒加载并设置默认展开和选中的效果

    本文主要介绍了Element树形控件el-tree懒加载并设置默认展开和选中的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • element的表单校验证件号规则及输入“无”的情况校验通过(示例代码)

    element的表单校验证件号规则及输入“无”的情况校验通过(示例代码)

    这篇文章主要介绍了element的表单校验证件号规则及输入“无”的情况校验通过,使用方法对校验数据进行过滤判断,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2023-11-11
  • vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    这篇文章主要介绍了vue项目element UI input框扫码枪扫描过快出现数据丢失问题,输入框要掉两个接口,根据第一个验证接口返回的code,弹不同的框,点击弹框确认再掉第二个接口,需要的朋友可以参考下
    2022-12-12
  • vue集成chart.js的实现方法

    vue集成chart.js的实现方法

    这篇文章主要介绍了vue集成chartjs的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 如何实现双向绑定mvvm的原理实现

    如何实现双向绑定mvvm的原理实现

    这篇文章主要介绍了vue双向数据绑定原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vuejs第七篇之Vuejs过渡动画案例全面解析

    Vuejs第七篇之Vuejs过渡动画案例全面解析

    这篇文章主要介绍了Vuejs第七篇之Vuejs过渡动画案例全面解析的相关资料,需要的朋友可以参考下
    2016-09-09
  • 基于Vue3实现无限滚动组件的示例代码

    基于Vue3实现无限滚动组件的示例代码

    如果你在社交媒体上停留的时间过长,那么,你所在的网站很可能正在使用无限滚动组件。这篇文章教你利用Vue3实现无限滚动组件,感兴趣的可以参考一下
    2022-09-09
  • Vue组件间数据传递的方式(3种)

    Vue组件间数据传递的方式(3种)

    这篇文章主要介绍了Vue组件间数据传递的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • lottie实现vue自定义loading指令及常用指令封装详解

    lottie实现vue自定义loading指令及常用指令封装详解

    这篇文章主要为大家介绍了lottie实现vue自定义loading指令及常用指令封装,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09

最新评论