react-hooks - 钩子回调中来自 useState 的变量被关闭
问题描述
我使用useKey来响应 Enter。
const [isFocused, setIsFocused] = useState(false);
useKey("Enter", ev => {
console.log("ev, isFocused -> ", ev, isFocused);
});
但是,即使更改了 isFocused 值,打印的值也始终为 false。
如何防止 useState 变量被冻结为初始值?
解决方案
该useKey
钩子支持依赖项(第 4 个参数):
const useKey = (key: KeyFilter, fn: Handler = noop, opts: UseKeyOptions = {}, deps: DependencyList = [key])
用 包装事件处理程序useCallback
并将其依赖项设置为isFocused
,然后将事件处理程序作为依赖项传递给useKey
。如果isFocused
更改,eventHandler
更改,useKey
并将相应更新:
const eventHandler = useCallback(ev => {
console.log("ev, isFocused -> ", ev, isFocused);
}, [isFocused])
useKey("Enter", eventHandler, {}, [eventHandler]);
推荐阅读
- javascript - 当我使用 firebase 部署我的网站时,我的联系表不起作用,但当我使用本地主机时它会起作用。我的第一个网站,所以不知道该怎么做
- sql - 在字段中查找重复值会导致多行相同的值
- python-3.x - 使用 Pythin 实现证书链验证器
- sql - PSQL 递归添加查询
- php - 创建 PHP yii 框架代码文档
- javascript - 如何在单击按钮中获取动态div的所有索引显示更多jquery
- webpack - 为什么 webpack 缓存卡住了?
- c# - FFMPEG:使用图像序列作为不同的输入
- python - 带有 Tweepy 的 Python Twitter 机器人:mentions_timeline() 接受 1 个位置参数,但给出了 2 个
- python - 如何在 python 中只读取 1 个单词?