【发布时间】:2019-06-10 16:02:02
【问题描述】:
我的问题是drafjs插件是编辑器,当我在编辑器中输入时它会跳转到文本的开头。我找到了How to stop DraftJS cursor jumping to beginning of text? 这个解决方案,但它与我的代码中的有点不同,此外我使用 React Hooks 的新功能制作了组件。拜托,你能帮我解决这个问题吗?
import {
EditorState, ContentState, convertToRaw,
} from 'draft-js'
import { Editor } from 'react-draft-wysiwyg'
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'
import draftToHtml from 'draftjs-to-html'
import htmlToDraft from 'html-to-draftjs'
export default ({ value, onChange }) => {
const [editorState, setEditorState] = useState(EditorState.createEmpty())
useEffect(() => {
setEditorState(
EditorState.push(
editorState,
ContentState.createFromBlockArray(
htmlToDraft(value || ''),
),
),
)
}, [value])
return (
<div className="rich-editor">
<Editor
editorState={editorState}
onEditorStateChange={onEditorStateChange}
toolbar={{
options: ['inline'],
inline: {
options: ['bold', 'italic', 'underline'],
},
}}
/>
</div>
)
function onEditorStateChange(es) {
setEditorState(es)
const html = draftToHtml(convertToRaw(es.getCurrentContent()))
if (value !== html) {
onChange({ target: { name: 'text', value: html } })
}
}
}
【问题讨论】:
-
请考虑不要使用
react-draft-wysiwyg,因为社区支持很少。 -
@JiangYD 好的,谢谢
标签: reactjs react-hooks react-draft-wysiwyg