在Draft.js中制作项目符号

时间:2016-09-02 13:38:40

标签: reactjs draftjs

我正在使用Draft.js向我的React应用程序引入文本编辑器。我已经使它适用于粗体,斜体和下划线,但我无法弄清楚如何将文本更改为项目符号。我已阅读文档,但我找不到任何有用的信息。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:9)

您可以将任何文本块转换为RichUtils draft-js的项目符号。以下是如何做到这一点:

// button to turn text block to bullet points
<button onClick={this.toggleBulletPoints}>Bullet points</button>

toggleBulletPoints(){
    this.setState({
        RichUtils.toggleBlockType(
            this.state.editorState,
            'unordered-list-item'
        )
    })
}

以下是在draft-js编辑器中更改内联样式和块类型的完整示例:https://github.com/facebook/draft-js/blob/master/examples/draft-0-10-0/rich/rich.html

答案 1 :(得分:0)

我只想发表评论,但我没有足够的业力...

在标记为正确的答案中,我不确定这将如何工作。看起来状态设置不正确。不应这样设置:

<button onClick={this.toggleBulletPoints}>Bullet points</button>

toggleBulletPoints(){
    this.setState({
        editorState: RichUtils.toggleBlockType(
            this.state.editorState,
            'unordered-list-item'
        )
    })
}

我认为您可以不定义键就直接将函数的输出保存为状态。至少,当我尝试标记为正确的答案时,它对我不起作用。

此外,由于该更新是在一年前进行的,因此这里提供了一种更新的解决方案:

constructor(props) {
  super(props);
  this.state = {
    editorState: EditorState.createEmpty()
  };
}

onChange = (editorState) => {
  this.setState({
    editorState
  });
};

toggleBlockType = () => {
  this.onChange(
    RichUtils.toggleBlockType(this.state.editorSection, 'unordered-list-item')
  );
};

render() {
  return (
    <div>
      <Editor
        editorState={this.state.editorState}
        onChange={this.onChange}
      />
    </div>
  )
}

希望这对某人有帮助!