Я пытаюсь заставить компонент Highlight
, который может:
- знать, что пользователь выбрал / выделил (mousedown и перетаскивает текст)
- показать выделенный текст(закрасьте вышеупомянутый выделенный текст в цвет)
- может обрабатывать несколько экземпляров этого.
см. изображения, чтобы понять, к чему я стремлюсь:
![single-instance](https://i.stack.imgur.com/U1ckE.png)
![multi-instance](https://i.stack.imgur.com/zX485.png)
Из Google, StackExchange, средних сообщений и т. Д. У меня есть компонент, который может выяснить текст пользователявыделено:
codesandbox
Это в основном взято из этого среднего сообщения freecodecamp , который использует подход slot
.
Для фактического рендеринга выделенного текста большинство примеров, которые я нашел, делают это с помощью регулярных выражений и заменяют исходный текст диапазоном или чем-то другим (например, vue-text-highlight ).
Эти два метода естественно нечетны.Это может сработать для выделения одного раза, но если исходный текст будет изменен и теперь будет содержать элемент span
, то последующий или повторный выбор не будет работать.
Поэтому мне было интересно, есть ли у кого-нибудь идеипреодолеть это.
На изображениях выше я показываю, для чего я буду использовать этот компонент выделения (связывая два разных текстовых экземпляра), но на данный момент я думаю, что изображения проясняют, что я имею в виду, выбирая и выделяя текст.