跳到主要内容

useKeyModifier

分类
导出大小
728 B
上次更改
3 个月前

响应式的修饰键状态。跟踪任意支持的修饰键的状态 - 详见浏览器兼容性说明。

通过 Vue School 的免费视频课程学习 useKeyModifier!

演示

capsLock (大写锁定)
numLock (数字锁定)
scrollLock (滚动锁定)
shift (Shift 键)
control (Control 键)
alt (Alt 键)

用法

ts
import { 
useKeyModifier
} from '@vueuse/core'
const
capsLockState
=
useKeyModifier
('CapsLock')
console
.
log
(
capsLockState
.
value
)

事件

你可以自定义哪些事件会触发状态更新。默认情况下是 mouseupmousedownkeyupkeydown。要自定义这些事件:

ts
import { 
useKeyModifier
} from '@vueuse/core'
const
capsLockState
=
useKeyModifier
('CapsLock', {
events
: ['mouseup', 'mousedown'] })
console
.
log
(
capsLockState
) // null
// Caps Lock turned on with key press
console
.
log
(
capsLockState
) // null
// Mouse button clicked
console
.
log
(
capsLockState
) // true

初始状态

默认情况下,返回的 ref 会是 Ref<null>,直到收到第一个事件。你可以通过以下方式明确地传递初始状态:

ts
const 
capsLockState1
=
useKeyModifier
('CapsLock') // Ref<boolean | null>
const
capsLockState2
=
useKeyModifier
('CapsLock', {
initial
: false }) // Ref<boolean>

类型声明

ts
export type 
KeyModifier
=
| "Alt" | "AltGraph" | "CapsLock" | "Control" | "Fn" | "FnLock" | "Meta" | "NumLock" | "ScrollLock" | "Shift" | "Symbol" | "SymbolLock" export interface
UseModifierOptions
<
Initial
> extends ConfigurableDocument {
/** * Event names that will prompt update to modifier states * * @default ['mousedown', 'mouseup', 'keydown', 'keyup'] */
events
?:
WindowEventName
[]
/** * Initial value of the returned ref * * @default null */
initial
?:
Initial
} export type
UseKeyModifierReturn
<
Initial
> =
ShallowRef
<
Initial
extends boolean ? boolean : boolean | null
> export declare function
useKeyModifier
<
Initial
extends boolean | null>(
modifier
:
KeyModifier
,
options
?:
UseModifierOptions
<
Initial
>,
):
UseKeyModifierReturn
<
Initial
>

来源

源代码示例文档

贡献者

Anthony Fu
SerKo
Jelf
NoiseFan
broBinChen
IlyaL
Fernando Fernández
Anthony Fu
Joe Maylor

更新日志

v13.6.0
d32f8 - refactor: 为所有纯函数添加 @__NO_SIDE_EFFECTS__ 注释 (#4907)
v12.5.0
eddbf - feat: 更多被动事件处理程序 (#4484)
0a9ed - feat!: 放弃对 Vue 2 的支持,优化打包并清理 (#4349)

根据 MIT 许可证发布。