使用带有输入的 react-router-dom

Posted

技术标签:

【中文标题】使用带有输入的 react-router-dom【英文标题】:Using react-router-dom with an input 【发布时间】:2021-08-03 04:50:54 【问题描述】:

我想重定向以使用 react-router-dom 重新呈现我在提交时写入输入的内容,但我不知道如何。

这是我的输入:

<form
    action="#"
    onSubmit=(e) => 
        e.preventDefault();
        dispatch(pokemonToSearch(value.toLowerCase()));
        setValue("");
    
>
    <div>
        <input
            value=value
            type="text"
            onChange=(e) => setValue(e.target.value)
        />
        <button type="submit">Search</button>
    </div>
</form>

我有一个简单的列表,当我单击一个项目时,它会呈现我单击的口袋妖怪,这是可行的。但我希望在搜索时也能发生同样的情况。

我的搜索栏在我的列表上方,如下所示:

<SearchBar />
    <div className="container px-4 ">
        <Switch>
            <Route exact path="/">
                <PokemonList />
                <ViewMore />
            </Route>
            <Route exact path="/pokemon/:nameLink">
                <Pokemon />
            </Route>
        </Switch>
    </div>

我使用 useEffect 来获取特定数据:

useEffect(() => 
    dispatch(getPokemonData(nameLink));
, [dispatch, nameLink]);

【问题讨论】:

【参考方案1】:

没关系,我刚刚解决了。我做了什么:

首次导入的useHistory:

import  useHistory  from "react-router-dom";

然后用它创建一个常量:

const history = useHistory();

然后push我要的url onSubmit:

<form
    onSubmit=(e) => 
        e.preventDefault();
        dispatch(pokemonToSearch(value.toLowerCase()));
        history.push(`/pokemon/$value`); // this right here
        setValue("");
    
>
</form>

【讨论】:

以上是关于使用带有输入的 react-router-dom的主要内容,如果未能解决你的问题,请参考以下文章

启用带有多个输入的选项卡并使用一个输入禁用选项卡

使用 css 放置带有输入文本的按钮

使用带有输入的 react-router-dom

使用带有标准输入和标准输出重定向的 2 进程管道时如何避免标准输入上的重复输入

使用 NHibernate 作为带有输入参数的命名查询调用存储过程

带有描述性文本的文本输入