Draft.js 如何在自定义块组件中获取当前 block 的文本内容?
我在用 Draft.js 做一个富文本编辑器,想给特定类型的 block(比如 ‘custom-block’)渲染一个自定义组件。现在的问题是,我怎么在组件里拿到这个 block 对应的纯文本内容?
我试过从 props 里拿 blockProps,但里面没有 text。也查了文档,看到 EditorState 和 ContentBlock,但不知道怎么在组件内部直接取到。比如我想在组件里显示 {text},但 text 不知道从哪来。
我的自定义组件是这样注册的:
const blockRenderer = (block) => {
if (block.getType() === 'custom-block') {
return {
component: CustomBlockComponent,
editable: false,
};
}
};
关键是通过
block.getText()来获取文本内容。你在注册组件时,可以给 CustomBlockComponent 传入额外的 props。修改一下你的 blockRenderer 函数:
然后在你的 CustomBlockComponent 里就可以直接使用这个 text prop 了:
记得别忘了 import 必要的模块。这样就能拿到 block 的文本内容了,亲测有效。有时候这些细节官方文档说得不够清楚,得自己摸索。希望这能帮你少走点弯路。