我已经在这个问题上工作了一段时间,我希望这不是一个错误。
我正在使用 Draft.js 测试一个文本编辑器,我只是希望我的用户向他们的文章添加一个超链接,所以我通过修改编辑器状态的内容来创建一个函数来实现这一点。
const addLlink = (e) => {
e.preventDefault();
const contentState = editorState.getCurrentContent();
const contentStateWithEntity = contentState.createEntity(
'LINK', 'MUTABLE', {url: 'https://www.amazon.com'} // link for testing only
);
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
const contentStateWithLink = Modifier.applyEntity(
contentStateWithEntity,
editorState.getSelection(),
entityKey
);
// tried with and without styling
const styledContentStateWithLink = Modifier.applyInlineStyle(
contentStateWithLink,
editorState.getSelection(),
'HYPERLINK'
);
const newState = EditorState.set(editorState, {
currentContent: styledContentStateWithLink
});
setEditorState(newState);
// Also tried: setEditorState(RichUtils.toggleLink(newState, newState.getSelection(), entityKey));
}
当我触发它时,我只使用了一个 Evergreen-ui 按钮:
<Button onMouseDown={addLlink} appearance="minimal">Link</Button>
我使用 Modifier 对象实现的样式有效,但我似乎无法让链接实际工作。应该注意的是,链接插件作为一个包,效果很好,但这仅用于检测输入/粘贴的 URL(不嵌入到文本中)。
对于使用 React 函数式编程的链接,是否有人有一个实际的工作示例,或者我可能做错了什么的建议?