React Contenteditable - 如何在 react-contenteditable 中将 onClick 分配给 <span>?

React Contenteditable - how can I assign an onClick to a <span> in react-contenteditable?

无论如何我可以使用这样的东西:

<span onClick={(e) => console.log(e)}>Testing</span>

react-contenteditable 中处理对 Testing 关键字的点击?

当我使用 html 道具时,它只需要一个 html 字符串,我想类似于 <span onclick="something()"></span>,但是有没有办法在 [=14 中做到这一点=] 而不是?

如果我使用<span onclick="something()">,我应该在哪里定义这个函数something()?我想此时我将无法访问 React 中定义的函数,对吧?那么我应该怎么做呢?

onClick 是 React 属性 所以 react-contenteditable 不知道如何处理它 - 因为 html 期望普通 html

实现您想要的(或非常接近它的)一个 hacky 方法是:

  1. 创建一个 onClickContentEditable 函数并将其作为 onClick 用于 ContentEditable
  2. innerRef 添加到 ContentEditable
  3. onClickContentEditable 中,然后单击的元素是 ContentEditable 什么都不做 - 因为我们只想与 ContentEditable
  4. 的子元素交互
  5. 基于单击元素的 DOM 属性(tagNameclassName ...等),玩得开心! :) 在 onClickContentEditable 中,您可以检查被单击元素的 DOM 属性并采取相应的措施。 您可以创建一个 class 来标记您要单击的元素。

您可以测试此实现 here - 沙箱是从复杂的 react-contenteditable 示例派生出来的。我在控制台中记录了交互。

希望对您有所帮助!