Skip to content

事件绑定

事件绑定使用 @event=${handler}

ts
const submit = (event: Event): void => {
  event.preventDefault();
};

export const FormButton = defineHtml(` <button @click=${submit}>提交</button> `);

框架会把原生事件作为 handler 的第一个参数传入。自定义组件事件则是 CustomEvent,业务数据在 event.detail

ts
const select = (event: CustomEvent<{ id: string }>): void => {
  save(event.detail.id);
};

defineHtml(`<user-picker @select=${select}></user-picker>`);

传参

ts
const remove = (id: string): void => {
  items.set(items.peek().filter((item) => item.id !== id));
};

defineHtml(` <button @click=${(event) => remove(item.id, event)}>删除</button> `);

修饰符

常见事件修饰符放在“指令 / 事件修饰符”里:

html
<form @submit.prevent="submit"></form>
<button @click.stop="select"></button>

WARNING

宏组件里推荐优先写 TypeScript handler,复杂逻辑不要塞进模板。