javascript - 输入路由另一个页面的键
问题描述
我有一个搜索框的输入。我必须喜欢;为搜索写下我的话,然后在我按下回车键后,它必须进入另一个带有输入值的页面。所以我可以使用查询字符串访问该值。那么我如何在按下回车后路由另一个具有输入值的页面?谢谢你的帮助!我只是添加了用于捕捉输入的代码。
useEffect(() => {
const listener = (event) => {
if (event.code === "Enter" || event.code === "NumpadEnter") {
alert("Enter key was pressed. Run your function.");
event.preventDefault();
}
};
document.addEventListener("keydown", listener);
return () => {
document.removeEventListener("keydown", listener);
};
}, []);
解决方案
您不一定要设置事件侦听器,使用onKeyDown
事件处理程序也可以。Enter 键的代码是13
,所以我们只需要检测它。
将您的值保持在一个状态(此处,myValue
),检测您是否按下了 Enter 键(此处,使用keyPressHandler
方法),最后,将参数传递给您的路由。
import {useHistory} from "react-router-dom"
function App() {
let history = useHistory();
const [myValue, setMyValue] = useState("");
const handleChange = ({ target: { value } }) => {
setMyValue(value);
};
const keyPressHandler = (e) => {
if (e.which === 13) {
// alert("You pressed enter!");
history.push("/process/" + myValue);
}
};
return (
<div className="App">
<input value={myValue} onKeyDown={keyPressHandler} onChange={handleChange} />
</div>
);
}
推荐阅读
- c# - 用于桌面和 web 应用的 WinAppDriver
- jquery - 下拉列表中的选项未动态选择
- javascript - 我如何在客户端(即网络浏览器)上找到 mac 地址?
- html - 如果我使用的是 UTF-8 元标记,是否需要用西班牙语对单个变音符号进行编码?
- php - ios设备上传pdf时文件上传错误
- android - Firebase AB 测试 SDK 错误:abt.AbtException。在控制台中收集的事件,但包括 0 个用户
- python - 使用 xpath 选择 html 属性的不同值
- angularjs - 部署到服务器后未找到 Web api
- mysql - 组上的行编号不正确
- node.js - ElasticSearch APM 代理设置到节点应用程序