import { Editorable } from '@tinymce/tinymce-react'
const handleInit = (e) => {
const instance = e.target;
handleInstance(instance)
}
<Editorable
initialValue={content}
apiKey='XXXX'
init={{
height: 500,
language: 'zh_CN',
menubar: true,
statusbar: true,
branding: false,
elementpath: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount'
],
toolbar:
'undo redo | formatselect | bold italic backcolor | \
alignleft aligncenter alignright alignjustify | \
bullist numlist outdent indent | removeformat | help'
}}
onEditorChange={handleEditorChange}
onSelectionChange={handleSelectionChange}
onInit={handleInit}
/>
父组件
const handleSelectionChange = (el) => {
setSelectedContent(editorInstance?.selection.getContent({ format: 'text' }))
}
const handleEditorChange = (content, editor) => {
setContent(content)
};
const handleInstance = (val)=> {
setEditorInstance(val)
}
//获取当前选中的node
editorInstance?.selection.getNode();
//获取当前node距编译器顶部的距离
const totalTop = (curNode) => {
let totalTop = null
let par = curNode.offsetParent
totalTop += curNode.offsetTop
while (par) {
if (navigator.userAgent.indexOf('MSIE 8.0') === -1) {
totalTop += par.clientTop
}
totalTop += par.offsetTop
par = par.offsetParent
}
return totalTop
}
//获取当前元素的滚动api
editorInstance?.contentWindow.scrollTo(0, totalTop)