vue3实战-子组件之间相互传值问题
更新时间:2023年03月19日 15:33:46 作者:月影星云
这篇文章主要介绍了vue3实战-子组件之间相互传值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
vue3子组件之间相互传值
1、引用第三方库mitt
npm install mitt
2、在项目src文件夹下创建utils文件夹,在utils创建mitt.js,mitt.js中的代码如下:
import mitt from "mitt"; export default new mitt();
3、示例:组件A传值给组件B
//在组件A中引入
import mitt from "@/utils/mitt";
//调用传值
mitt.emit("mittClick", "数据数据数据");//在组件B中引入
import mitt from "@/utils/mitt";
//接收传值
mitt.on("mittClick", (val) => {
console.log(val)//数据数据数据
})vue不同组件之间相互传值
使用一个空Vue实例来进行传值,通过$emit,$on即可。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title></title>
<meta charset="utf-8">
<script src="./main/vue.js"></script>
</head>
<body>
<div id="demo">
<!-- test code -->
<custom-a></custom-a>
<custom-b></custom-b>
<!-- test code -->
</div>
</body>
<script type="text/javascript">
let bus = new Vue();
Vue.component("custom-a", {
template: '<button @click="transValue">Click</button>',
methods: {
transValue: () => bus.$emit("transValue", "hello from a")
}
});
Vue.component("custom-b", {
template: '<input :value="msg">',
data: function() {
return {
msg: ""
}
},
mounted() {
bus.$on("transValue", msg => this.msg = msg)
}
});
new Vue({
el: "#demo"
});
</script>
</html>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Vue3+Vite项目引入Bootstrap5、bootstrap-icons方式
这篇文章主要介绍了Vue3+Vite项目引入Bootstrap5、bootstrap-icons方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-10-10
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果,本文给大家分享在实现过程中遇到问题,需要的朋友一起看看吧2020-02-02
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
这篇文章主要介绍了vue-cli webpack模板项目搭建以及打包时路径问题的解决方法,需要的朋友可以参考下2018-02-02
vue中手动封装iconfont组件解析(三种引用方式的封装和使用)
这篇文章主要介绍了vue中手动封装iconfont组件(三种引用方式的封装和使用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09


最新评论