为什么在使用语义 UI 的搜索组件进行反应时,合成事件上没有 `keyCode` 值?

Why is there no `keyCode` value on the synthetic event in react using Semantic UI's Search component?

我使用语义 UI 的搜索组件创建了一个简单的搜索,如下所示:

<Search
    value={searchString}
    onSearchChange={onSearchChange}
    showNoResults={false}
    size="massive"
    placeholder="eg. Huberdo"
    input="text"
  />

这是我的 onSearchChange 功能:

const onSearchChange = (e, data) => {
console.log(e.keyCode);
if (e.keyCode === 13) {
  submit();
}
setSearchString(e.target.value);
};

这是我的问题的一个最简单的例子。 https://codesandbox.io/s/blue-leaf-7mzvo?fontsize=14

问题:

当我在控制台记录事件时,我找不到任何关于按下的 keyCode 的信息。 e.keyCodee.charCode 一样未定义。

我需要这个,这样我就可以在用户按下回车键时提交搜索。

keyCode隐藏在哪里?

根据语义 UI 文档,函数在正常的合成反应事件中传递。 e.target.value 正在按预期工作。

您可以通过添加 onKeyDown 道具来做到这一点:

import React, { useState } from "react";
import ReactDOM from "react-dom";
import { Search } from "semantic-ui-react";

import "./styles.css";

function App() {
  const [searchString, setSearchString] = useState("");

  const handleEnter = e => {
    if (e.keyCode === 13) {
      submit();
    }
  };

  const onSearchChange = (e, data) => {
    setSearchString(e.target.value);
  };

  const submit = () => {
    console.log("submitted");
  };

  return (
    <Search
      value={searchString}
      onSearchChange={onSearchChange}
      showNoResults={false}
      size="massive"
      placeholder="eg. Huberdo"
      input="text"
      onKeyDown={handleEnter}
    />
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);