为什么在使用语义 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.keyCode
与 e.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);
我使用语义 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.keyCode
与 e.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);