我正在尝试使用React Hooks在slate上设置一个工具栏。好像出了什么问题,我搞不清楚是什么原因。下面是我的代码:
const renderMark = (props, editor, next) => {
const { children, mark, attributes } = props
switch (mark.type) {
case "bold":
return <strong {...attributes}>{children}</strong>
case "italic":
return <i {...attributes}>{children}</i>
case "underline":
return <u {...attributes}>{children}</u>
default:
return next()
}
}
const onClickMark = (event, type, editor) => {
event.preventDefault()
editor.toggleMark(type)
}
<>
<Toolbar>
<Button onPointerDown={event => onClickMark(event, "bold")}>
<BoldIcon />
</Button>
<Button onPointerDown={event => onClickMark(event, "italic")}>
<ItalicIcon />
</Button>
<Button onPointerDown={event => onClickMark(event, "underline")}>
<UnderlineIcon />
</Button>
</Toolbar>
<Editor
onChange={handleChange}
onKeyDown={onKeyDown}
renderMark={renderMark}
renderNode={renderNode}
value={value}
/>
</>你知道为什么这不管用吗?
发布于 2019-08-22 23:07:09
问题是我需要将工具栏绑定到编辑器。我使用useRef钩子做到了这一点,如下所示。
const editorRef = useRef()
const onClickMark = (event, type, editorRef) => {
event.preventDefault()
editorRef.current.toggleMark(type)
}
return (
<>
<Toolbar>
<Button onPointerDown={event => onClickMark(event, "bold", editorRef)}>
<BoldIcon />
</Button>
...
</Toolbar>
<StyledEditor
...
ref={editorRef}
...
/>
</>https://stackoverflow.com/questions/57610795
复制相似问题