我的应用中有多个 SlateJS 编辑器,代表各个页面。添加新页面时,我希望将焦点更改为该页面中的编辑器。
我不知道该怎么做!onFocus
我已经检查了文档,并且有onBlur
钩子插件,但这是为了对焦点更改做出反应。在松弛的社区片段上有这样的:
// Moving cursor to the end of the document
ReactEditor.focus(editor);
Transforms.select(editor, Editor.end(editor, []));
但我也不能让它工作。这是我的代码的精简版:
根元素
<div>
{pages.map((pageID: number) => (
<Page onChange={updatePage(pageID)}/>
))}
</div>
页面元素
<div>
<Input onChange={onChange}/>
</div>
然后<Input/>
元素呈现Slate
和的Editable
组件slate-react
。
我尝试过 RTFM,但除了插件页面之外,我确实找不到任何关于管理焦点的信息。
我尝试添加一个focusOnRender
布尔道具,并在Input
元素上使用它的钩子:
useEffect(() => {
if (focusOnRender)
ReactEditor.focus(editor);
}, [focusOnRender]);
但这对我不起作用。
我在描述函数的文档中找到了这个页面editor.focus()
,但是当我尝试这个时,我收到以下错误:
TypeError: editor.focus is not a function