我有一个反应表单,实际上我可以使用提交按钮使它起作用。 当我单击“提交”按钮时,链接将我发送到所需的组件。
但是,当我像大多数人一样在输入表单中写完内容后按“ 输入”时,实际上什么也没发生。
当有人在表单中写东西并按Enter键时,如何重定向到结果页面?
这里是表单,其功能组件带有useState:
function Header(){
const [title, setTitle] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
if (!title) return;
setTitle(title);
setTitle("");
console.log(title);
}
return(
<nav>
<li className="liensNav">
<Link className="lien" to="/">
{/* Tu as fill white dans le logo svg */}
<img className="logo" src={logo} alt="logo"></img>
</Link>
</li>
<li className="liensNav">
<Link className="lien" to="/">Top Games</Link>
</li>
<li className="liensNav">
<Link className="lien" to="/top-streams">Top Live Streams</Link>
</li>
<li className="liensNav">
<form className="formSubmit" onSubmit={handleSubmit}>
<input className="inputRecherche" type="text" value={title}
required onChange={(e) => setTitle(e.target.value)} />
<button type="submit">
<Link
to={{
pathname: "/resultats",
state: {
id : title
}
}}
>
<img className="logoLoupe" src={search} alt="icone loupe"/>
</Link>
</button>
</form>
</li>
</nav>
)
}
export default Header;
也许我需要使用 onKeyPress ? 但是无论如何,我不知道如何在进入时重定向,这是主要问题。
如果有人路过,谢谢。
答案 0 :(得分:1)
是的,您需要onKeyPress或onKeyUp,在其处理程序中,您可以像这样检查输入 并使用历史记录重定向到页面
handleKeyDown(e) {
if (e.key === 'Enter') {
history.push('/resultats')
}
}
您输入
<input className="inputRecherche" type="text" value={title}
onKeyPress={(e) => this.handleKeyDown(e)}
required onChange={(e) => setTitle(e.target.value)} />
希望有帮助
答案 1 :(得分:0)
您可以仅检查是否存在特定值,如果存在则重新定向。
if(title) {
// redirect or whatever....
}
React-router-dom具有漂亮的重定向组件。