簡體   English   中英

"React 熱鍵無法訪問更新狀態"

[英]React Hotkeys cannot access updated state

我正在使用react-hotkeys<\/code>庫提供的GlobalHotKeys<\/code>在輸入指定的鍵盤快捷鍵時觸發某些事件。 但是處理函數無法獲取狀態的更新值。 以下是我使用的代碼。

代碼沙箱代碼可在此處獲得:此鏈接<\/a>


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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM