[英]React Hotkeys cannot access updated state
我正在使用
react-hotkeys<\/code>庫提供的
GlobalHotKeys<\/code>在輸入指定的鍵盤快捷鍵時觸發某些事件。
但是處理函數無法獲取狀態的更新值。 以下是我使用的代碼。
import React from 'react'
import { GlobalHotKeys } from 'react-hotkeys'
function Playground() {
const [count, setCount] = React.useState(0)
const handleEvent = React.useCallback(() => {
console.log("Count Value now is: ", count)
}, [])
return (
<GlobalHotKeys
keyMap={{
FOCUS_BARCODE: 'alt+a'
}}
handlers={{
FOCUS_BARCODE: handleEvent
}}>
<div>
<h1>Here is count value: {count}</h1>
<button onClick={() => setCount((count) => count + 1)}> Increase Count</button>
</div>
</GlobalHotKeys>
)
}
export default Playground
我已經更新了您的代碼示例以使用熱鍵。 您必須將控制台日志放入 useEffect 調用中,因為它是一種副作用。
import React, { useEffect } from "react";
import { GlobalHotKeys } from "react-hotkeys";
function Playground() {
const [count, setCount] = React.useState(0);
const handleEvent = React.useCallback(() => {
setCount((count) => count + 1);
}, [setCount]);
useEffect(() => {
console.log("Count Value now is: ", count);
}, [count]);
return (
<GlobalHotKeys
keyMap={{
FOCUS_BARCODE: "alt+a"
}}
handlers={{
FOCUS_BARCODE: handleEvent
}}
>
<div>
<h1>Here is count value: {count}</h1>
<button onClick={() => setCount((count) => count + 1)}>
{" "}
Increase Count
</button>
</div>
</GlobalHotKeys>
);
}
export default Playground;
沙盒 - https://codesandbox.io/s/laughing-newton-08vyv
useEffect - https://reactjs.org/docs/hooks-effect.html
你必須添加allowchanges ..
<GlobalHotKeys
keyMap={{
FOCUS_BARCODE: 'alt+a'
}}
handlers={{
FOCUS_BARCODE: handleEvent
}}
allowChanges={true}
>
<div>
<h1>Here is count value: {count}</h1>
<button onClick={() => setCount((count) => count + 1)}> Increase Count</button>
</div>
</GlobalHotKeys>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.