【发布时间】:2021-11-24 09:12:48
【问题描述】:
我有一些类似以下的反应代码(最小的可重现示例):
import React, { useState } from 'react';
const Todo = ({todo}) => {
const [isUpdating, setisUpdating] = useState(false)
const updateItemHandler = (e) => {
setisUpdating(true);
}
return(
<div onClick={updateItemHandler} className={fa ${isUpdating ? "fa-check" : "fa-pencil"}`}></div>
<div id={todo.id}>
<div suppressContentEditableWarning={true}
contentEditable = {isUpdating}>{todo.value}
</div>
</div>
)
}
export default Todo;
当我单击 div 时,它确实将 contentEditable 更改为 true,但我还想同时关注新可编辑的 div。我尝试像这样修改我的 updateItemHandler 函数:
const updateItemHandler = (e) => {
setisUpdating(true);
e.focus();
}
但是 React 抛出了一个错误/说这里的焦点不是一个函数。
当我将 contentEditable 更改为 true 时,有什么方法可以自动聚焦 div?
谢谢
【问题讨论】:
-
你没有提供 updateItemHandler 回调的使用位置,但无论如何,它应该是 e.target.focus() 而不是 e.focus()
-
抱歉刚刚更新了代码以提供它,谢谢 - 我认为 e.target.focus() 不会在这里工作,因为那时 React 将尝试关注您单击的图标而不是文本框
标签: javascript reactjs react-hooks contenteditable setfocus