Vue中设置组件的自定义事件和解绑组件的自定义事件

2023-12-31 01:28

本文主要是介绍Vue中设置组件的自定义事件和解绑组件的自定义事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

组件的自定义事件

  • 设置School组件实现props,子给父传数据。School组件用于和Student组件做对比。

  • App向School组件传getSchoolName,School组件通过props接收存入School的VueConponent。随后通过调用getSchoolName实现子给父传递数据

  • 想让组件标签识别原生Vue提供的事件。需要加入native

    <School @click.native='show'/>
  • <template><div class="school"><h2>学校的名字:{{ name  }}</h2><button @click="sendSchoolName">测试sendSchoolName方法</button></div>
    </template>
    ​
    <script>
    export default {props: ['getSchoolName'],data(){return {name: '小猴子的玩具商'}},methods:{sendSchoolName(){this.getSchoolName(this.name)}},
    }
    </script>
    <style scoped>.school {background-color: pink;padding: 5px;margin-top: 30px;}
    </style>>
    ​
  • Student组件实现功能也是子给父传递数据。但用组件的自定义事件来实现

  • <template><div class="blue"><h2>学生的名字:{{ name }}</h2><h2>学生的名字:{{ address }}</h2><button @click="sendStudentName">测试sendStudentName方法</button></div>
    </template>
    <script>
    export default {name:'Student',data(){return {name:'boy',address:'老地方'}},methods: {sendStudentName(){// 事件在谁身上则在哪里触发,故触发Student组件实例身上的boy事件,emit有发射的意思。传了一个参数name给Appthis.$emit('boy',this.name)}},
    }
    </script>
    <style scoped>.blue{background-color: blue;padding: 5px;}
    </style>
     
  • Student和School组件实现的区别在于

    1、App中的getSchoolName方法是直接给School组件,School组件需要props接收一下,自己调用一下。

    2、App中的getStudentName方法不直接传给Student组件,而是利用触发事件( this.$emit() ) 的方式,调用demo

  • <template><div class="title"><router-view/><h2>{{ mas }}</h2><!-- 给组件的实列对象VueComponent上绑定事件(boy事件)。如果触发boy事件demo就被调用 --><!-- 第一种写法,<Student v-on:boy = "demo"/> --><!-- 第二种写法,用ref获取Student组件的VueComponent--><Student ref="student"/><!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 --><School :getSchoolName ='getSchoolName'/></div>
    </template>
    ​
    <script>
    import Student from '../src/components/Student.vue'
    import School from '../src/components/School.vue'
    export default {name: 'App',components:{Student,School},data(){return {mas: '你好啊'}},methods: {//接收School组件传过来的namegetSchoolName(name){console.log('发送成功了',name);},//接收Student组件传过来的namedemo(name){console.log('demo被调用',name)}}
    },// 第二种写法的灵活性更高,当要求是:延迟3秒才触发事件。第二种方法可以实现。如下mounted(){setTimeout(()=>{// this.$refs.student为获取到Student组件的VueComponent,$on为当什么的时候。括号内的第一个元素为事件名,第二个元素为触发事件回调的方法this.$refs.student.$on('boy', this.demo)},3000)}
    </script>
    <style scoped>.title {background-color: gray;padding: 5px;}
     

    解绑组件的自定义事件

    • this.$off()//解绑一个自定义事件

    • this.$off([ ])//解绑多个自定义事件

    • this.$off()//解绑所有的自定义事件

    • this.$destroy()销毁当前组件的VueConponent,而Vue提供的事件还能响应

    • <template><div class="blue"><h2>学生的名字:{{ name }}</h2><h2>学生的名字:{{ address }}</h2><button @click="sendStudentName">测试sendStudentName方法</button><button @click="unbind">解绑自定义事件</button><button @click="death">销毁当前组件的实例化对象</button>
      ​</div>
      </template>
      ​
      <script>
      export default {name:'Student',data(){return {name:'boy',address:'老地方'}},methods: {sendStudentName(){// 事件在谁身上则在哪里触发,故触发Student组件实例身上的boy事件,emit有发射的意思。传了一个参数namethis.$emit('boy',this.name)this.$emit('girl')},unbind(){this.$off('boy')//解绑一个自定义事件this.$off(['boy','girl'])//解绑多个自定义事件this.$off()//解绑所有的自定义事件},death(){//销毁当前的Student组件的实例,销毁后所有的Student实列的自定义事件全都不奏效。this.$destroy()}},
      }
      </script>
      <style scoped>.blue{background-color: blue;padding: 5px;}
      </style>

这篇关于Vue中设置组件的自定义事件和解绑组件的自定义事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/554574

相关文章

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论