Есть ли способ обновить изменения Slate после завершения текущего изменения?

По сути, я хочу сделать встроенные строки, которые можно обновлять с конца, если есть курсор / выделение. Тем не менее, кажется, что это важные изменения, такие как удаление с конца встроенного.

Я пытался сделать что-то вроде этого (под руководством Slate-Sticky-Inline)

JSFiddle или что я думаю, соответствующий код ниже

const onChange = change => {
    //Not in a inline but at the start of some node
    if (!change.value.focusInline && change.value.selection.focusOffset === 0) {
      //Find the index of the node
      const textNodeIndex = change.value.focusBlock.nodes.findIndex(
        node => node.key === change.value.focusText.key
      );
      //check the node before it to see if its an inline
      const upcomingNode = change.value.focusBlock.nodes.get(textNodeIndex - 1);
      if (Inline.isInline(upcomingNode)) {
        //put me at the end of the inline
        return change.extendToEndOf(upcomingNode);
      }
    }
  };

Я надеялся, что кто-то может помочь мне понять, что здесь происходит не так, и, возможно, объяснить, что я неправильно понимаю. Я также создал barebones jsfiddle с моим плагином. Вы заметите, что если вы попытаетесь стереть "p" в конце "@help", это не позволит вам сделать это.

1 ответ

Ты забыл this.setState({value: change.value}) в функции onChange.

Slate Editor должен рассматриваться как контролируемый компонент.

Другие вопросы по тегам