让我解释一下 @click="deleteAll"@click="deleteAll()" 的区别:

  1. 不加括号 @click="deleteAll"
<text class="delete" @click="deleteAll">清空</text>

// 这种写法会:
// 1. 自动传入事件对象 event 作为第一个参数
// 2. 当点击时才调用函数
function deleteAll(event) {
    console.log(event)  // 可以获取到事件对象
    // 执行清空逻辑
}
  1. 加括号 @click="deleteAll()"
<text class="delete" @click="deleteAll()">清空</text>

// 这种写法:
// 1. 不会自动传入事件对象
// 2. 当点击时调用函数
function deleteAll() {
    // 无法获取事件对象
    // 执行清空逻辑
}
  1. 如果需要同时获取事件对象和传参
<!-- 方法一:使用 $event -->
<text @click="deleteAll($event, otherParam)">清空</text>

<!-- 方法二:使用内联函数 -->
<text @click="(event) => deleteAll(event, otherParam)">清空</text>

function deleteAll(event, otherParam) {
    console.log(event)      // 事件对象
    console.log(otherParam) // 其他参数
}

在你的场景中:

  • 如果不需要使用事件对象,两种写法都可以
  • 如果需要事件对象(比如阻止冒泡),建议用不加括号的写法

建议:

  • 一般情况下不加括号更简洁
  • 需要传参时才加括号
  • 需要事件对象时不加括号

标签: none

添加新评论

阅读量:356