Создание маркеров в Draft.js

Я использую Draft.js, чтобы представить текстовый редактор в моем приложении React. Я сделал так, чтобы он работал жирным шрифтом, курсивом и подчеркиванием, но я не могу понять, как изменить текст на маркеры. Я прочитал документацию, но не нашел ничего полезного. Кто-нибудь может помочь?


person Arslan Tariq    schedule 02.09.2016    source источник


Ответы (2)


Вы можете превратить любой текстовый блок в маркированный список с RichUtils из draft-js. Вот как это сделать:

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

toggleBulletPoints(){
    this.setState({
        editorState: 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

person sehrob    schedule 14.09.2016
comment
Тем не менее, не отступает от блоков. - person Oliver Dixon; 05.12.2018

Я бы просто оставил комментарий, но у меня не хватает кармы ...

В ответе, помеченном как правильный, я не уверен, как это сработает. Похоже, состояние выставлено неправильно. Если это не так:

<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>
  )
}

Надеюсь, это кому-то поможет!

person Kyle Pendergast    schedule 13.08.2019