如何检测以下输入元素当前是否集中在ReactJS渲染函数中?

<input type="text" style={searchBoxStyle} placeholder="Search"></input>   

推荐答案

只要安装了输入 node 并且有对其的引用,就可以对照document.activeElement进行判断:

const searchInput = React.useRef(null)

if (document.activeElement === searchInput.current) {
  // do something
}

return <input type="text" ref={searchInput} />

另一种方法是为输入字段中的focusblur个事件添加事件侦听器:

const [focused, setFocused] = React.useState(false)
const onFocus = () => setFocused(true)
const onBlur = () => setFocused(false)

return <input type="text" onFocus={onFocus} onBlur={onBlur} />

请注意,每当 node 聚焦或模糊时,这将调用重新渲染(但这是您想要的,对吗?)

Node.js相关问答推荐

序列化事务未按预期工作

在Node.js下使用PostgreSQL客户端聚合PostgreSQL中的用户定义类型

在Node JS中获取控制台选项卡标题

FindOne()返回所有值,而不是一个值

是否可以在MongoDB中比较和匹配引用文档中的字段

FiRestore UPDATE方法引发错误:&Quot;错误:13内部:收到代码为1&Quot;的RST_STREAM

在 NodeJS 中使用 post 时出现错误 500TypeError: 无法解构 'req.body' 的属性 'name',因为它未定义

Postgressql的BIGSERIAL自增序列,即使由于唯一约束错误没有创建行,也会自动增加

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

未授权使用联合身份未授权用户角色从 Amplify graphQL 访问类型 Y 上的 X

为什么这个 module.export 函数如果我直接传递它就不起作用,但如果我将它包装在一个匿名函数中就可以工作

错误:0308010C:try 通过 Github 推送部署到 firebase 托管时出现数字

Cloudflare 522 错误 - javascript 客户端连接到 node 服务器

从 Response.json() 返回的 JSON 似乎无效?

为什么我的 npm 脚本中的 glob 不起作用?

Node js中向rest服务发送https请求的步骤

在 ExpressJS 中将变量传递给 JavaScript

使用 node.js 执行一个 exe 文件

在 Node.js 中写入 CSV

如何创建安全(TLS/SSL)Websocket 服务器