Vue 3 + TypeScript 事件触发与数据绑定方法

Vue 3 + TypeScript 事件触发与数据绑定方法

事件绑定与触发 Vue 3 提供了多种方式绑定和触发事件,可以通过模板直接绑定或使用 setup 语法糖。

html 复制代码
<template>
  <button @click="handleClick">点击事件</button>
  <input @input="handleInput" v-model="inputValue" />
</template>

<script lang="ts" setup>
const handleClick = (event: MouseEvent) => {
  console.log('按钮被点击', event);
};

const inputValue = ref('');
const handleInput = (event: Event) => {
  console.log('输入值变化', inputValue.value);
};
</script>

自定义事件 子组件可以通过 defineEmits 定义并触发自定义事件,父组件监听这些事件。

html 复制代码
<!-- 子组件 ChildComponent.vue -->
<script lang="ts" setup>
const emits = defineEmits(['customEvent']);
const triggerEvent = () => {
  emits('customEvent', '传递的数据');
};
</script>

<!-- 父组件 -->
<ChildComponent @customEvent="handleCustomEvent" />

获取页面绑定数据 使用 refreactive 创建响应式数据,并通过模板或逻辑代码访问。

html 复制代码
<script lang="ts" setup>
const count = ref(0);
const state = reactive({ name: 'Vue 3' });

const updateData = () => {
  count.value++;
  state.name = 'Updated';
};
</script>

表单输入绑定 使用 v-model 实现双向数据绑定,支持多种表单元素。

html 复制代码
<input v-model="text" type="text" />
<textarea v-model="message"></textarea>
<select v-model="selected">
  <option value="A">A</option>
</select>

事件修饰符 Vue 提供了事件修饰符简化常见操作,如阻止默认行为或停止冒泡。

html 复制代码
<form @submit.prevent="onSubmit"></form>
<a @click.stop="doThis"></a>

生命周期事件 可以在生命周期钩子中执行操作,如 onMountedonUpdated

typescript 复制代码
import { onMounted } from 'vue';

onMounted(() => {
  console.log('组件已挂载');
});

键盘与鼠标事件 监听特定按键或鼠标事件,使用修饰符或手动检查键值。

html 复制代码
<input @keyup.enter="submit" />
<button @click.middle="middleClick">中键点击</button>

TS 类型定义 为事件处理函数和响应式数据提供类型注解,确保类型安全。

typescript 复制代码
interface User {
  name: string;
  age: number;
}

const user = reactive<User>({ name: '', age: 0 });
const handleEvent = (payload: User) => {
  console.log(payload.name);
};

以上方法涵盖了 Vue 3 和 TypeScript 中常见的事件触发与数据绑定场景,可根据具体需求选择合适的方式。

相关推荐
会豪2 小时前
前端插件-不固定高度的DIV如何增加transition
前端
却尘2 小时前
Server Actions 深度剖析(2):缓存管理与重新验证,如何用一行代码干掉整个客户端状态层
前端·客户端·next.js
Hilaku2 小时前
面试官开始问我AI了,前端的危机真的来了吗?
前端·javascript·面试
zheshiyangyang3 小时前
TypeScript学习【一】
javascript·学习·typescript
shellvon3 小时前
前端攻防:揭秘 Chrome DevTools 与反调试的博弈
前端·逆向
β添砖java3 小时前
案例二:登高千古第一绝句
前端·javascript·css
却尘3 小时前
Server Actions 深度剖析:这就是个披着 React 外衣的 RPC
前端·rpc·next.js
TNTLWT3 小时前
单例模式(C++)
javascript·c++·单例模式
南雨北斗4 小时前
Vue 3 修饰符(Modifiers)
前端