我已经创建了路由到"/search/xxxx"
的搜索功能,但它位于标头中,所以当我再次搜索时,它会重复路由并生成"/search/search/xxx"
。
除了react-router
之外还有什么方法可以解决这个问题吗?或者你能给予我一些建议吗?
const searchHandler = (e) => {
e.preventDefault();
if (router.asPath.startsWith("/search")) {
history.back();
}
router.push("search/" + searchText);
console.log(searchText); //sil
setSearchText("");
searchRef.current.blur();
};
1条答案
按热度按时间pjngdqdw1#
不要使用相对路径,因为相对路径总是把你写的任何东西作为路径值附加到现有的url上,而是使用绝对路径,这样
router.push("search/" + searchText);
就会变成router.push("/search/" + searchText);
。这里
search/
是相对的,/search/
是绝对的。确保添加/search/
之前的任何内容,因为它不会被追加。例如,如果路径类似于
http://localhost:3000/user/search/jhon
,则绝对路径将是/user/search/jhon
,因此是router.push("/user/search/" + searchText);
。