<text class="delete" @click="deleteAll">清空</text>,deleteAll加括号和不加的区别
让我解释一下 @click="deleteAll"
和 @click="deleteAll()"
的区别:
- 不加括号
@click="deleteAll"
<text class="delete" @click="deleteAll">清空</text>
// 这种写法会:
// 1. 自动传入事件对象 event 作为第一个参数
// 2. 当点击时才调用函数
function deleteAll(event) {
console.log(event) // 可以获取到事件对象
// 执行清空逻辑
}
- 加括号
@click="deleteAll()"
<text class="delete" @click="deleteAll()">清空</text>
// 这种写法:
// 1. 不会自动传入事件对象
// 2. 当点击时调用函数
function deleteAll() {
// 无法获取事件对象
// 执行清空逻辑
}
- 如果需要同时获取事件对象和传参
<!-- 方法一:使用 $event -->
<text @click="deleteAll($event, otherParam)">清空</text>
<!-- 方法二:使用内联函数 -->
<text @click="(event) => deleteAll(event, otherParam)">清空</text>
function deleteAll(event, otherParam) {
console.log(event) // 事件对象
console.log(otherParam) // 其他参数
}
在你的场景中:
- 如果不需要使用事件对象,两种写法都可以
- 如果需要事件对象(比如阻止冒泡),建议用不加括号的写法
建议:
- 一般情况下不加括号更简洁
- 需要传参时才加括号
- 需要事件对象时不加括号