draftjs如何从光标位置应用粗体?

时间:2018-11-08 05:51:54

标签: javascript reactjs draftjs

我想知道如何从光标位置开始将 BOLD 切换为文本。 RichUtils允许我使用ctrl-b命令来切换粗体,这是我想要的,但是需要一个按钮。如果我当前单击我的按钮(richUtils.toggleInlineStyles()),则仅将粗体应用于突出显示的文本。但我希望从光标位置开始键入时将其显示为粗体。

您将如何实现?

2 个答案:

答案 0 :(得分:0)

https://draftjs.org/docs/api-reference-editor-state#setinlinestyleoverride

  

返回一个新的EditorState对象,该对象具有指定的DraftInlineStyle作为内联样式集,并应用于下一个插入的字符。

答案 1 :(得分:0)

我知道这个问题很老,但我遇到了同样的问题。 使用键盘快捷键和点击按钮的区别在于,使用键盘快捷键时,不会留下输入。

您需要做的是防止按钮从输入中窃取焦点。

您可以通过从 preventDefault 事件调用 mousedown 来实现。 使用 mousedown 而不是 click 很重要。

例如:

      <button
        type="button"
        onMouseDown={(e) => {
          e.preventDefault();
          updateEditorState(RichUtils.toggleInlineStyle(editorState, 'BOLD'));
        }}
      >
        <strong>B</strong>
      </button>

当您单击该按钮时,您的光标仍将位于输入中,并且在您开始输入时将应用新样式。