javascript - 如何在 Draft.js 中对齐文本

标签 javascript reactjs rich-text-editor draftjs

我想知道如何对齐 Draft.js 中的文本如下图所示。

text-align

我已经搜索了几天,但我还没有找到解决方案。

最佳答案

看了源码,找到了方法。使用 blockRenderMap,您可以像这样添加一些自定义 block 类型:

const blockRenderMap: Record<string, DraftBlockRenderConfig> = {
'header-one-right': {
    element: 'h1',
    wrapper: <StyleHOC style={{ ...blockStylesMap['header-one'], display: 'flex', justifyContent: 'flex-end' }} />,
  },
  'header-two-right': {
    element: 'h2',
    wrapper: <StyleHOC style={{ ...blockStylesMap['header-two'], display: 'flex', justifyContent: 'flex-end' }} />,
  },
  'header-three-right': {
    element: 'h3',
    wrapper: <StyleHOC style={{ ...blockStylesMap['header-three'], display: 'flex', justifyContent: 'flex-end' }} />,
  },
  'unstyled-right': {
    element: 'div',
    wrapper: <StyleHOC style={{ ...blockStylesMap['unstyled'], display: 'flex', justifyContent: 'flex-end' }} />,
  },
};

我使用 flex 来避免浪费时间寻找覆盖内部样式的方法 .public-DraftStyleDefault-ltr

StyleHOC 非常简单:

const StyleHOC: React.FC<Props> = ({ style, children }) => {
  const childrenWithStyle = React.Children.map(children, (child) => {
    if (React.isValidElement(child)) {
      return React.cloneElement(child, { style });
    }
    return child;
  });
  
  return <>{childrenWithStyle}</>;
};

然后您可以使用 RichUtils.toggleBlockType(editorState, blockType) 切换 blockType

关于javascript - 如何在 Draft.js 中对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39262994/

相关文章:

javascript - 在tinyMCE的上下文菜单中添加 "text color"

javascript - 在创建时设置 Canvas 宽度/高度

javascript - 在 selectize.js 中显示 labelField 的多个值

javascript - anchor 标签和检查输入

javascript - ReactJS - 未定义的元素

javascript - 如何在状态更改时重新渲染子组件(父)reactjs

javascript - 如何通过 Prop [REACT.JS] 将图像 url 从父组件传递到子组件

javascript - 在内容可编辑的段落中存在的粗体元素内设置插入符号(光标)

firefox - javascript 富文本编辑器中出现的奇怪元素

javascript - queryselector 必须是对象 mongodb