Как добавить узел сланца в конкретное пустое пространство без выделения? - PullRequest
0 голосов
/ 15 апреля 2020

Предположим, мне нужно добавить какой-то пользовательский элемент в документ Slate js, щелкнув панель инструментов вне редактора. Это вызывает Transform.insertNodes, но вместо добавления элемента вместо курсора (который исчез при щелчке на панели инструментов и потерял выделение) он помещает мой элемент в конец документа. Использование Locations подобно Point или Range не поможет, потому что я не знаю текущей позиции курсора и не вижу никакого помощника, который следовал бы за позицией курсора.

Итак, как поставить элемент на месте курсора?

1 Ответ

0 голосов
/ 22 апреля 2020

Похоже, что editor.selection становится нулевым при потере фокуса, что является известной проблемой .

Есть несколько обходных путей. Один из них заключается в том, чтобы самостоятельно отслеживать выбор:

<Slate
  ...
  onBlur={() => {
    editor.lastSelection = editor.selection;
  }}
/>
...
Transforms.select(editor, editor.lastSelection)
Transforms.insertNodes(...,) // this will no work

Другой подход заключается в создании обезьяньего патча Transforms.deselect, чтобы запретить потерю выделения.

...