vue3__Provide / Inject (依赖注入)和mixins

一、 Provide提供和Inject 注入

Provide提供

<script setup>
import { provide } from 'vue'provide(/* 注入名 */ 'message', /* 值 */ 'hello!')
</script>

 例如父组件中提供方法

<template>
<div class="home">dfhualsf<div><button @click="favBtn()">增加</button></div><A></A>
</div>
</template><script setup>
import A from '../components/A.vue';let num = ref(12)const favBtn=function(){num.value=num.value+1}
provide('homeMethond',num)</script><style lang="scss">
.home {font-size: 32px;line-height: 50px;
}
</style>

Inject 注入

<script setup>
import { inject } from 'vue'const data= inject('message')
</script>

两个子组件中

<template>
<div class="A"><h1>A组件</h1>{{num}}<hr/><B></B>
</div>
</template><script setup>
import B from './B.vue';
import { inject } from 'vue';let anum=inject('homeMethond')</script><style lang="scss">
.A {font-size: 26px;
}
</style>
<template><div class="B"><h1>B组件</h1>{{bnum}} </div>
</template><script setup>
let bnum=inject('homeMethond')</script><style lang="scss">
.B{font-size: 26px;
}
</style>

此时当父组件的值发生变化的时候,子组件的也会同步变化 

二、 mixins(混入已经不推荐使用了)

1.创建mixins文件夹

2.创建mixins.js文件

import { Ref } from "vue";
export default function(){let num = ref(1)let fav=ref(false)const favBtn=function(){num.value+=1fav.value=truesetTimeout(()=>{fav.value=false},2000)}return {num,fav,favBtn}
}

 父组件

​
import { Ref } from "vue";
export default function(){let num = ref(1)let fav=ref(false)const favBtn=function(){num.value+=1fav.value=truesetTimeout(()=>{fav.value=false},2000)}return {num,fav,favBtn}
}​

A和B

<template>
<div class="A"><h1>A组件</h1>{{fav? '正在计算中':'计算完成'}}  {{num}}<div><button @click="favBtn()">增加</button></div>
</div>
</template><script setup>
import mixins from '../mixins/mixins.js';
let {num,fav,favBtn} =mixins()
</script><style lang="scss">
.A {font-size: 32px;
}
</style>

                        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/410036.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SqlAlchemy使用教程(二) 入门示例及编程步骤

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解 二、入门示例与基本编程步骤 在第一章中提到&#xff0c;Sqlalchemy提供了两套方法来访问数据库&#xff0c;由于Sqlalchemy 官方文档结构有些乱&#xff0c;对于ORM的使用步骤的描…

transbigdata笔记:其他方法

1 出租车相关 1.1 taxigps_to_od 提取出租车OD信息 transbigdata.taxigps_to_od(data, col[VehicleNum, Stime, Lng, Lat, OpenStatus]) 输入出租车GPS数据&#xff0c;提取OD信息 data出租车GPS数据col[VehicleNum, Time, Lng, Lat, OpenStatus]五列 比如GPS数据长这样&am…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…

【MATLAB源码-第112期】基于matlab的IDMA系统仿真,输出误码率和误块率,采用turbo编码。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 IDMA&#xff08;交织多址接入&#xff09;系统详细描述 1. 基本原理&#xff1a; - IDMA是一种基于码分多址&#xff08;CDMA&#xff09;的通信技术&#xff0c;它通过为每个用户分配一个独特的交织模式来实现用户之间…

GitHub API使用--获取GitHub topic

目录标题 技术简介申请token简单使用使用Java调用获取GitHub topic总结 技术简介 GitHub API是一个功能强大的工具&#xff0c;为开发者提供了访问和操作GitHub平台上资源的途径。无论是构建个人工具&#xff0c;集成自动化流程&#xff0c;还是开发应用程序&#xff0c;GitHu…

【latex】参考文献排版前移,在最前面引用\usepackage{url}

【LaTeX】参考文献排版前移&#xff0c;在最前面引用\usepackage{url} 写在最前面完整解决步骤请教申申latex编译报错解决方案 写在最前面 参考文献从21开始排版前移了 解决方案&#xff1a;在最前面加一行 \usepackage{url}完整解决步骤 请教申申 申申yyds&#xff01;&am…

Windows NT 3.5源代码已编译!

2020年5月&#xff0c;Windows NT 3.5 build 782源代码被泄露。然而&#xff0c;它缺少很多文件&#xff0c;包括编译器、链接器、头文件等。大多数这些工具都可以从 Windows NT 3.5 的 SDK 和 DDK 中应用&#xff08;您也可以临时处理 NT 3.51 的 DDK 文件&#xff0c;但之后根…

1.环境部署

1.虚拟机安装redhat8系统 这个其实很简单&#xff0c;但是有一点小细节需要注意。 因为我的电脑是 16核心的&#xff0c;所以选择内核16&#xff0c;可以最大发挥虚拟机的性能 磁盘选择SATA&#xff0c;便于后期学习 将一些没用的设备移除 选择安装redhat 8 时间选择上海 选择…

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十九章到第二十一章

十九、碰撞检测 原文&#xff1a;inventwithpython.com/invent4thed/chapter19.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 碰撞检测涉及确定屏幕上的两个物体何时相互接触&#xff08;即发生碰撞&#xff09;。碰撞检测对于游戏非常有用。例如&#xff0c;如…

string 模拟实现

string的数据结构 char* _str; size_t _size; size_t _capacity; _str 是用来存储字符串的数组&#xff0c;采用new在堆上开辟空间&#xff1b; _size 是用来表示字符串的长度&#xff0c;数组大小strlen(_str)&#xff1b; _capacity 是用来表示_str的空间大小, _capacity…

Androidmanifest文件加固和对抗

前言 恶意软件为了不让我们很容易反编译一个apk&#xff0c;会对androidmanifest文件进行魔改加固&#xff0c;本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件&#xff0c;我们学完之后可以动手实践。 1、Androidmanife…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 第1章 HTML5+CSS3初体验 项目1-2 许愿墙

项目展示 在生活中&#xff0c;许愿墙是一种承载愿望的实体&#xff0c;来源于“许愿树”的习俗。后来人们逐渐改变观念&#xff0c;开始将愿望写在小纸片上&#xff0c;然后贴在墙上&#xff0c;这就是许愿墙。随着互联网的发展&#xff0c;人们又将许愿墙搬到了网络上&#…