Performance: Mouse button modifiers
This affects how efficiently mouse events are handled and filtered in the browser, impacting interaction responsiveness.
<template> <button @click.left="handleLeftClick">Click me</button> </template> <script setup> function handleLeftClick() { console.log('Left click detected'); } </script>
<template> <button @click="handleClick">Click me</button> </template> <script setup> function handleClick(event) { if (event.button === 0) { console.log('Left click detected'); } } </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Handling all clicks and filtering in handler | 1 event listener | 0 | 0 | [X] Bad |
| Using Vue .left mouse button modifier | 1 event listener | 0 | 0 | [OK] Good |
.right modifier do when used with a Vue @click event?.left, .right, and .middle to specify which mouse button triggers an event..right modifier.right modifier restricts the event to trigger only on right mouse button clicks..right = right click only [OK]@click.middle to listen for middle mouse button clicks.@click.middle is valid syntax; others are incorrect or invalid modifiers.<button @click.left="leftClick" @click.right="rightClick">Click me</button>
@click.left and @click.right events only, meaning left and right mouse clicks trigger handlers.@click.middle handler, the middle mouse button click triggers no method.<div @click.left="handleLeft" @click.right.prevent="handleRight">Test</div>
handleRight method not run when right-clicking the div?.prevent modifier.prevent modifier calls event.preventDefault() to stop default browser actions like navigation or form submission, but does not stop event handlers from running.handleRight might not run.left and .middle, correctly handling both buttons..left.middle. <div @click.right="onRight">Click</div> listens only to right clicks, which should be ignored. <div @click="onAnyClick">Click</div> listens to all clicks, including right clicks.Pass the test and this pattern moves unknown