vue3.0在子组件中触发的父组件函数方式

目录
  • 方式一
    • 子组件
    • 父组件
  • 方式二
    • 子组件
    • 父组件

注:本文是基于vue3.0的语法

方式一

  • 在script中引入 defineEmit ,import { defineEmit } from 'vue' ;
  • 通过defineEmit定义事件,例如:const emit = defineEmit(['myclick']);
  • 子组件定义了ClickEmit 事件,并且返回了一个函数,在点击事件里通过 emit("myclick") 传递出事件给父组件
  • 在父组件中的 引用的子组件的标签上定义上要传递的事件,具体代码如下

子组件

<template>
 
  //我派发出了事件,这个事件的命名为myclick,连接至父组件
  <button @click="emit('myclick')">Emit</button>
 
  //我啥都没派发
  <button>noneEmit</button>
 
</template>
<script setup>
import { defineEmit } from 'vue'  
 
// 定义派发事件
const emit = defineEmit(['myclick'])
 
</script>

父组件

<template> 
 
  //子组件使用通信的 @myclick事件 → 使用父组件函数
  <HelloWorld @myclick="onmyclick"/>
 
</template>
<script setup>
 
//导入子组件
import HelloWorld from './components/HelloWorld.vue'; 
 
//子组件使用使用父组件函数
const onmyclick = () => {
  console.log(" Come from HelloWorld! ");
} 
 
</script> 

方式二

先获取上下文对象,通过该对象的emit()方法进行事件的传出,其他同上

子组件

<template>  
  <button @click="emitclick">emitclick</button>
</template>
<script setup> 
import { useContext } from 'vue' 
 
// 获取上下文
const ctx = useContext(); 
const emitclick = () => { 
  ctx.emit('myclick');
} 
</script> 

父组件

<template> 
 
  //子组件使用通信的 @myclick事件 → 使用父组件函数
  <HelloWorld @myclick="onmyclick"/>
</template> 
<script setup>
import HelloWorld from './components/HelloWorld.vue';
 
const onmyclick = () => {
  console.log(" Come from HelloWorld! ");
} 
</script> 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue3.0版本强势升级点特性详解

    目录 一.Composition API: 组合API/注入API 二.自定义渲染API(Custom Renderer API) vue2.x架构问题 三.更先进的组件 Fragment组件 Suspense组件 四.更好的TS支持 五.更快的开发体验(vite开发构建工具) 六.按需编译,体积比Vue2.x更小(Tree shaking) 七.性能比2.x快1.2-2倍 diff算法的优化 render阶段的静态提升(render阶段指生成虚拟dom树的阶段) 事件侦听缓存 减少创建组件实例

  • vue3.0 移动端二次封装van-uploader实现上传图片(vant组件库)

    1.前提:业务需求,最多上传6张图片,并可以实现本地预览 2.解决方法:使用vant组件库中的van-uploader实现 3.代码实现 template <div class="upload-oss"> <van-uploader :after-read="onRead" :before-read="beforeRead" :accept="fileType" v-model="fileList&

  • vue3.0如何在全局挂载对象和方法

    目录 如何在全局挂载对象和方法 1.官方的说明 2.更新后的挂载方法 3.在全局使用 4.但是应用中的this对象已经不再是一个Vue对象了 vue3全局挂载和使用 如何在全局挂载对象和方法 1.官方的说明 Vue3.x已经不支持直接Vue.prototype.$http = () => {}这种方式来挂载全局对象,这是由于globalVue不再是构造函数,因此不再支持该构造函数. 2.更新后的挂载方法 这个是官网的说明 所以现在我们的办法就是这样 import { createApp } fr

  • Vue3.0中如何监听props方法

    目录 Vue3.0如何监听props 第一种 第二种 vue3.0监听props做数据回显 Vue3.0如何监听props 学习vue3.0记录下props监听: 第一种 直接监听这个props export default defineComponent({   props: {     isOpen: Boolean,   },   emits: {     "close-modal": null,   },   setup(props, context) {     watch(

  • vue3.0 子组件如何修改父组件传递过来的值

    目录 子组件修改父组件传递过来的值 使用toRefs进行解决 子组件向父组件传值emit的使用注意事项 子组件的写法 父组件使用 子组件修改父组件传递过来的值 vue 的子组件 不是 不能直接更改父组件的值,需要将props 的值 给到子组件,后再修改, 否则:Unexpected mutation of “props” prop. vue3提供了一个解决:toRefs:https://v3.cn.vuejs.org/api/refs-api.html#torefs toRefs 非常有用,这样

  • vue3.0父子传参,子修改父数据的实现

    目录 父子传参,子修改父数据 父组件 子组件 父子组件传值(语法糖) 父子组件交互 父子传参,子修改父数据 父组件 父亲传值给儿子,儿子可以修改父亲的数据(同步) <template>   <div>     父组件     {{ data }}     <button @click="add()">修改</button>     <hr />     子组件:<Son />   </div> <

  • vue3.0在子组件中触发的父组件函数方式

    目录 方式一 子组件 父组件 方式二 子组件 父组件 注:本文是基于vue3.0的语法 方式一 在script中引入 defineEmit ,import { defineEmit } from 'vue' ; 通过defineEmit定义事件,例如:const emit = defineEmit(['myclick']); 子组件定义了ClickEmit 事件,并且返回了一个函数,在点击事件里通过 emit("myclick") 传递出事件给父组件 在父组件中的 引用的子组件的标签上

  • vue3.0搭配.net core实现文件上传组件

    在开发Web应用程序中,文件上传是经常用到的一个功能. 在Jquery时代,做上传功能,一般找jQuery插件就够了,很少有人去探究上传文件插件到底是怎么做的. 简单列一下我们要做的技术点和功能点 使用技术 客户端使用vue.js 3.0,并使用vue3新增的功能:Composition API ,服务器使用asp.net core 功能点 标签美化 文件预览 文件上传 服务器接收文件 文件选择美化 在标准的html文件选择标签,是十分不美观的.大概就是下图的样子 但是我们的设计师的设计图可不是

  • Vue3的setup在el-tab中动态加载组件的方法

    公司某项目需求在页面显示的组件是根据角色变化而变化的,在这个项目中我使用了elementplus的el-tabs来动态的显示这些组件,如下图所示 <template> <component style="margin-top:15px" v-for="item in pageList" :is="item.module_id"/> </template> 数据内容大概是这样的 在未使用setup语法糖时候我要引

  • vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show

    需求:点击btn,弹出modal显示图表(以折现图为例) 这应该是很基本的需求也是很容易实现的,代码和效果如下: 代码解释:setTem是一个方法,改变modal为true,默认为false : chart-line是图表子组件,通过data向其传递参数,data绑定的数据是父组件mounted后拿到的数据 效果图:点击btn后的确显示了modal框,但是里面的图表不能显示,接着改变子组件任何代码,迫使重新编译子组件,则子组件的图表可以正常显示 分析:当点击btn时,modal框的确弹出来了,但

  • 关于el-table表格组件中插槽scope.row的使用方式

    目录 el-table表格组件中插槽scope.row使用 slot-scope和scope.row的用法 实现效果 解决 el-table表格组件中插槽scope.row使用 要实现点击查看显示后端返回的字段并以文字渲染到页面上,就要是使用到插槽 下图是要实现的: <el-table-column label="任职要求" width="100" align="center"> <template slot-scope=&qu

  • vue中子组件传递数据给父组件的讲解

    发送者: modifyName:是接受者的键,也就是发送和接收的唯一标识 itemObj:是一个对象 this.$emit("modifyName",this.itemObj); 接受者: <common-table 是一个自定义组件 @modifyName 就是发送时所定义的唯一标识 modifyName 是一个函数 <common-table @modifyName="modifyName"></common-table> 总结 以

  • Vue.js中使用Vuex实现组件数据共享案例

    当组件中没有关联关系时,需要实现数据的传递共享,可以使用Vuex 先不管图片 一.安装 在vue cli3中创建项目时勾选这个组件就可以了 或者手动安装 npm install store --save 二.使用 main.js store.js .vue文件 图片中的js文件中有 三部分 分别与图片上对应 1. state中存储数据 2. 而数据的修改需要先经过action的dispatch方法 (不需要异步获取的数据可以不经过这一步,如上图) 3. 然后经过matations的commit方

  • vue组件中props与data的结合使用方式

    目录 组件中props与data的结合使用 子组件中data从props中动态更新数据 组件中props与data的结合使用 如前所述(vue组件属性(props)及私有数据data),vue组件中,props是组件公有属性,对外:data是组件的私有数据,对内.正因为props对外,由外部赋值,因此在组件内部,是只读的,即组件内部不适宜去改变这些元素的值.当然,改也可以改,但运行时刻会有告警. 正如我们写一个函数,对于传入的参数,我们一般是只读对待的,极少会去修改它的值一样.当然,这只是一种编

  • Vue父组件向子组件传值以及data和props的区别详解

    1.在父组件中定义 msg 属性 data:{ msg:'123 -我是父组件中的数据' }, 2.引用子组件 父组件可以在引用子组件的时候,通过属性绑定的形式,把需要传递给子组件的数据,以属性绑定的形式,传递到子组件内部,供子组件使用. 把父组件传递过来的 msg 属性,绑定到子组件的 parentmsg 属性上. <com1 :parentmsg="msg"></com1> 3. 在子组件定义部分,需要把父组件传递过来的 parentmsg 属性,先在pro

  • 详解React 父组件和子组件的数据传输

    在学习 React 框架组件间数据传输知识点前,我们需要先明确几点使用原则. React的组件间通讯是单向的.数据必须是由父级传到子级或者子级传递给父级层层传递. 如果要给兄弟级的组件传递数据,那么就要先传递给公共的父级而后在传递给你要传递到的组件位置. 这种非父子关系的组件间传递数据,不推荐使用这种层层传递的方式:而是选择使用维护全局状态功能模块(Redux) 一.父组件向子组件传递数据 父组件向子组件传递数据是通过在父组件中引用子组件时,在子组件标签设置传输数据的属性:而子组件中通过 thi

随机推荐