我正在使用Draft.js编辑器组件.我有一个通过blockRendererFn属性正确指定的自定义块渲染器.该组件将按照Draft documentation中的建议呈现从draft-js导入的EditorBlock.在获得自定义块渲染器的属性中,我不知道该块是否为只读.至少不是默认情况下.我可以通过blockProps来获取它,但是我感觉缺少了一些东西.就像它在使用EditorBlock时应该自然工作一样.就像它可以从上下文或其他内容中获取readOnly值.
当readOnly为true时,我是否有责任在没有EditorBlock的情况下呈现块?我是否有责任通过blockProps将readOnly值传播到我的自定义块渲染器?
解决方法:
好吧,我在松散的draftjs团队中得到了这个答案,所以我将在这里总结一下:
将readOnly设置为true应该足以防止整个编辑器中发生任何onChange回调.我的问题是一种错误,我在从blockRendererFn返回的自定义块渲染器中将editable设置为true.这导致readOnly标志被覆盖,因此允许在我的自定义块中进行更改. Isaac将其标记为潜在有害行为.
在我的情况下,解决方案不是在自定义块渲染器上指定我的块是否可编辑.这样,就可以适当考虑readOnly,而无需执行其他任何操作.