javascript - 您如何在 Chakra-UI 输入中按 Enter 键提交?
问题描述
我正在创建一个包含输入的组件,该输入在按下回车键或单击搜索按钮时将用户引导至新选项卡。搜索按钮功能正常,但是我无法获取输入以在输入键按下时调用 handleSubmit 方法。到目前为止,按回车键什么都不做。我怎样才能做到这一点?代码:
const LinkCard = (props) => {
const [searchInput, setSearchInput] = useState("");
const handleChange = (e) => {
setSearchInput(e.target.value);
};
const handleClick = (e) => {
e.preventDefault();
location.assign("http://www.mozilla.org");
};
const handleSubmit = (e) => {
e.preventDefault();
location.assign("http://www.mozilla.org");
};
return (
<Flex borderWidth="1px" borderRadius="lg" alignItems="center">
{props.icon}
<Box>{props.websiteName}</Box>
<InputGroup>
<Input
placeholder={"Search " + props.websiteName}
onChange={handleChange}
onSubmit={handleSubmit}
flexGrow="1"
m="2%"
/>
<Link href={props.url} passHref={true}>
<a>
<InputRightElement m="2%">
<Button onClick={handleClick}>
<FaSearch />
</Button>
</InputRightElement>
</a>
</Link>
</InputGroup>
</Flex>
);
};
解决方案
const [value, setValue] = React.useState('');
return (
<form
onSubmit={e=> {
e.preventDefault();
location.assign('?wd=' + value)
}}>
<input value={value} onChange={(e)=> setValue(e.currentTarget.value)} />
<button type="submit">Search</button>
</form>
)
或者
const [value, setValue] = React.useState('');
return (
<>
<input
value={value}
onChange={(e)=> setValue(e.currentTarget.value)}
onKeyPress={e=> {
if (e.key === 'Enter') {
location.assign('?wd=' + value)
}
}}
/>
<button onClick={()=> location.assign('?wd=' + value)}>Search</button>
</>
);
推荐阅读
- javascript - 使用离线 file:/// 协议,我试图通过 iframe 将数据存储在本地存储中。我怎样才能使这项工作,或者有更好的方法?
- ios - 无法通过 Testflight 发送 IOS 推送通知
- dataset - 如何为动态手势识别准备数据集?
- gradle - 在 bytebuddy gradle 插件中指定插件类
- json - 雪花 - 对象构造 - Json 值
- google-cloud-platform - 谷歌colab上传时间到谷歌驱动器
- php - 使用来自 API 调用的数据验证出生日期
- python - 用 Java 编写 .CSV 文件时遇到问题?
- java - 如何使用 JEP 412 从 Java 17 调用 C 函数:外部函数和内存 API
- javascript - 根据显示的图片更改“喜欢”