选择文本和突出显示选择或获取选择值(反应)

Geo*_*der 5 javascript html5 reactjs electron

我有一个显示一些跨度的React应用程序:

<span>Hello</span> <span>my</span> <span>name</span> <span> is </span> ...
Run Code Online (Sandbox Code Playgroud)

我希望用户像这样用鼠标选择文本 你好我的名字是

..然后获取选定的值,或突出显示文本等。我​​将如何在React中做到这一点?我不确定要使用什么事件处理程序以及如何掌握当前选择!一个最小的例子或提示将不胜感激!

jac*_*son 10

下面是 React 中使用函数式组件的示例:

const Post = () => {
    const handleMouseUp() {
        console.log(`Selected text: ${window.getSelection().toString()}`);
    }
    return (
        <div onMouseUp={handleMouseUp}>Text</div>
    );
}
Run Code Online (Sandbox Code Playgroud)

正如 Lyubomir 指出的,window.getSelection() API 可以解决这个问题!


Ant*_*nAL 7

使用onMouseUponDoubleClick事件来检测调用方法,该方法将确定使用JavaScript Selection API进行选择。

使用window.getSelection()得到的选择对象。

要获取选定的文本,请使用window.getSelection.toString()

要获取用于渲染弹出菜单的选定文本区域的坐标,请使用selection.getRangeAt(0).getBoundingClientRect()

作为示例实现,请看一下react-highlight库。

  • 如果用户使用键盘中的 Shift + 箭头选择文本而不与鼠标交互会怎样? (2认同)

Jul*_*Smz 6

我认为这是正确的方法...

 document.onmouseup = () => {
   console.log(window.getSelection().toString());
 };
Run Code Online (Sandbox Code Playgroud)


Lyu*_*mir 5

没有针对特定React的解决方案。只需使用window.getSelection API。


输出突出显示的文本运行 window.getSelection().toString()

  • 这不能回答问题。 (2认同)
  • 您只需绑定一个“OnMouseUp”,然后使用此处提供的“getSelection”方法 (2认同)