我正在尝试使用reactjs和slate.js实现Rich Text编辑器。到目前为止,我能够使大多数功能正常工作,但是无法在光标处向文档添加图像不起作用(但是,在文档开始处插入图像仍然有效)。
当我试图将其插入任何其他点时,我会收到错误。 在renderpart处,即执行编辑器的onchange方法。
const target = getEventRange(e, this.state.EditorComp.state.value)
change = this.state.EditorComp.state.value.change().call(this.insertImage, filelocation,target)
this.state.EditorComp.onChange(change);
slate-react.es.js:1229 Uncaught Error: Unable to find a DOM node for "51". This is often because of forgetting to add `props.attributes` to a custom component.
at findDOMNode$1 (slate-react.es.js:1229)
at findDOMPoint (slate-react.es.js:1247)
at findDOMRange (slate-react.es.js:1290)
我的代码基于链接https://github.com/ianstormtaylor/slate/blob/master/examples/images/index.js
请帮助。
答案 0 :(得分:4)
您是否为编辑器定义了schema?在添加将isVoid
设置为true的图像的架构之前,我都遇到了同样的错误。您的架构中至少需要满足以下条件:
const schema = {
blocks: {
image: {
isVoid: true
}
}
};
答案 1 :(得分:0)
我想如果要在光标处插入图像,请插入行内:
change.insertInline({
type: 'img',
isVoid: true,
data: { location: location }
})
change.moveToStartOfNextText().focus()
然后在您的renderNode方法中:
const { attributes, node, isSelected } = props
if (node.type === 'img') {
node.data.get('location')
return <img ... />
}