跟着官网学 Vue - 事件
2023-12-14 08:33:06
    		-  触发与监听事件: 在组件的模板表达式中,可以直接使用 $emit方法触发自定义事件。<!-- MyComponent --> <button @click="$emit('someEvent')">Click me</button>或者在组件实例方法中使用: export default { methods: { submit() { this.$emit('someEvent'); } } }父组件可以通过 v-on或缩写@来监听事件:<MyComponent @some-event="callback" />也可以使用 .once修饰符来只监听一次事件:<MyComponent @some-event.once="callback" />
-  事件参数: 可以在触发事件时传递额外的参数,并在监听事件时接收这些参数。 <!-- 在触发事件时传递额外的参数 --> <button @click="$emit('increaseBy', 1)">Increase by 1</button> <!-- 在父组件中监听事件并接收参数 --> <MyButton @increase-by="(n) => count += n" />或者通过组件方法处理事件: <MyButton @increase-by="increaseCount" />methods: { increaseCount(n) { this.count += n; } }
-  声明触发的事件: 可以使用 emits选项显式地声明组件要触发的事件。export default { emits: ['inFocus', 'submit'] }emits也支持对象语法,用于对触发事件的参数进行验证。export default { emits: { submit(payload) { // 通过返回值为 `true` 还是为 `false` 来判断验证是否通过 } } }
-  事件校验: 类似于对 props 进行类型校验,可以使用对象形式为事件添加校验。 export default { emits: { click: null, // 没有校验 submit: ({ email, password }) => { if (email && password) { return true; } else { console.warn('Invalid submit event payload!'); return false; } } }, methods: { submitForm(email, password) { this.$emit('submit', { email, password }); } } }
以上是关于 Vue 组件中事件的一些重要概念和实践。下面是一个完整的代码案例,演示了上述的使用方法:
<!-- ParentComponent.vue -->
<template>
  <div>
    <MyComponent @some-event="handleSomeEvent" />
    <MyComponent @some-event.once="handleSomeEventOnce" />
  </div>
</template>
<script>
import MyComponent from './MyComponent.vue';
export default {
  components: {
    MyComponent
  },
  methods: {
    handleSomeEvent() {
      // 处理触发的事件
      console.log('Some event triggered in ParentComponent');
    },
    handleSomeEventOnce() {
      // 处理触发的事件
      console.log('once event triggered in ParentComponent');
    }
  }
}
</script>
<!-- MyComponent.vue -->
<template>
  <button @click="triggerSomeEvent">Click me</button>
</template>
<script>
export default {
  methods: {
    triggerSomeEvent() {
      // 触发自定义事件
      this.$emit('some-event');
    }
  }
}
</script>
在这个例子中,ParentComponent 监听了 MyComponent 触发的自定义事件 some-event,并在触发时执行了相应的处理函数。
    			文章来源:https://blog.csdn.net/qq_43116031/article/details/134983034
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!