Vue


事件处理

内联事件处理器:

<button @click="num++">点击</button>

let num = ref(1)

方法事件处理器:

<button @click="btnclick">点击</button>

let num = ref(1)

const btnclick = () => {
  num.value++
}

默认传入 event 参数:

<button @click="btnclick">点击</button>

const btnclick = (e) => {
  console.log(e)
}

如果想传多参数,event参数要写 $event:

<button @click="btnclick('Andy',$event)">点击</button>

const btnclick = (name, e) => {
  console.log(name)
  console.log(e)
}

鼠标按键修饰符:

<div class="red" @click.left="redLeftClick" @click.right="redRightClick" @click.middle="redMiddleClick">
  <div class="blue" @click.left="blueLeftClick" @click.right="blueRightClick" @click.middle="blueMiddleClick"></div>
</div>

const redLeftClick = () => {
  console.log('redLeftClick')
}
const blueLeftClick = () => {
  console.log('blueLeftClick')
}
const redRightClick = () => {
  console.log('redRightClick')
}
const blueRightClick = () => {
  console.log('blueRightClick')
}
const redMiddleClick = () => {
  console.log('redMiddleClick')
}
const blueMiddleClick = () => {
  console.log('blueMiddleClick')
}

遵循冒泡原则


事件修饰符:

.stop

//阻止冒泡,执行到 blueClick 就结束了

  <div class="red" @click="redClick">
    <div class="blue" @click.stop="blueClick"></div>
  </div>

.self

//当前元素本身被点击事件时才执行

  <div class="red" @click.self="redClick">
    <div class="blue" @click="blueClick"></div>
  </div>

.once

//当前元素只被调用一次,listener 会在被调用之后移除

  <div class="red" @click="redClick">
    <div class="blue" @click.once="blueClick"></div>
  </div>

.capture

//事件捕获,先捕获再冒泡,先执行redClick,再执行blueClick

  <div class="red">
    <div class="blue" @click="blueClick" @click.capture="redClick"></div>
  </div>

键盘按键修饰符:

<input @keydown="btnclick" @keyup="btnclick" />

const btnclick = (e) => {
  console.log(e)
}

页面列表

ITEM_HTML