1

基本上,如果光标/选择在那里,我想制作可以从末尾更新的内联。但是,它似乎覆盖了更改,例如从末尾删除内联。

我试图做这样的事情(在 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);
      }
    }
  };

我希望有人可以帮助我了解这里出了什么问题,并可能解释我的误解。我还用我的插件创建了一个准系统 jsfiddle。您会注意到,如果您尝试删除“@help”末尾的“p”,它会阻止您这样做。

4

1 回答 1

0

您忘记了this.setState({value: change.value})onChange 功能。

Slate Editor 应被视为受控组件。

于 2018-06-20T20:15:28.310 回答