输入表单后重定向

时间:2019-10-05 17:29:15

标签: reactjs react-router react-hooks

我有一个反应表单,实际上我可以使用提交按钮使它起作用。 当我单击“提交”按钮时,链接将我发送到所需的组件。

但是,当我像大多数人一样在输入表单中写完内容后按“ 输入”时,实际上什么也没发生。

当有人在表单中写东西并按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 但是无论如何,我不知道如何在进入时重定向,这是主要问题。

如果有人路过,谢谢。

2 个答案:

答案 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具有漂亮的重定向组件。