BlueprintJS / React - 无法通过 onClick 检索 TagInput > Tag 值

BlueprintJS / React - trouble retrieving TagInput > Tag value via onClick

在 React/BlueprintJS 应用程序中,我有一个 TagInput。单击时,我需要访问任何 Tag 的字符串值。为简单起见,假设我只需要 console.log(value).

我似乎无法在回调中找到标签的值。基于 the documentation,我认为我需要在 tagProps 中传递一个 onClick 函数。但是,我尝试过的似乎都没有 return 字符串值。

我在这里创建了一个基本示例,点击任何标签后在控制台中看到错误:

https://codesandbox.io/s/blueprint-sandbox-7jsb3?fontsize=14

Warning: This synthetic event is reused for performance reasons. If you're seeing this, you're accessing the property `nativeEvent` on a released/nullified synthetic event. This is set to null. If you must keep the original synthetic event around, use event.persist().

我将非常感谢在正确方向上的推动,非常感谢。

我认为警告本身是不言自明的。

React 有一个合成事件池,这意味着它将一个事件分配给一个处理程序,并在处理程序调用后将该事件释放回池中。

const handleTagClick = x => console.log(x);

在上面的代码中,x 只不过是 synthetic event,它会在您的 TagInput 显示在屏幕上后失效并释放到事件池中。

因此,当您尝试单击时,您会收到警告。消除此警告的简单方法是打印 currentTarget.

const handleTagClick = x => console.log(x.currentTarget.innerText);

以上代码将打印被点击的确切目标。

另一种方法是使用 event.persist(),

const handleTagClick = x => {
  x.persist();
  console.log(x.currentTarget.innerText);
}

但我认为你的情况会很慢,所以不要使用它。

详细了解 synthetic event

Demo