我从udemy的视频和使用MERN堆栈制作一个网站。
在视频中(Header.js)
<Route render={({ history }) => <Search history={history} />} />
我做了同样的事情,但由于错误,我不得不将其 Package 在Routes
中
这就是App.js
<Routes>
<Route path="/search/:keyword" component={Home} />
<Route path="/" element={<Search />} />
</Routes>
和Search.js
const Search = ({ history }) => {
const [keyword, setKeyword] = useState('');
const searchHandler = (e) => {
e.preventDefault();
if (keyword.trim()) {
history.push(`/search/${keyword}`);
} else {
history.push('/');
}
};
return (
<form onSubmit={searchHandler}>
<input type="text" onChange={(e) => setKeyword(e.target.value)} />
<button type="submit">Search</button>
</form>
);
};
在视频中,一切正常,但当我这样做时,搜索栏消失了。
如果我按照聊天GPT与代码一样
删除component
并将其替换为element
,从header.js
代码中删除history
,它显示搜索栏,但表示history
未定义。
1条答案
按热度按时间svmlkihl1#
react-router-dom@6
删除了RRDv5中存在的路由属性。你现在应该使用React钩子。useNavigate
钩子取代了RRDv5useHistory
钩子。