reactjs - React js:反应路由器不重定向
问题描述
我是新手学习反应,我不确定为什么这不能正常工作。当我按“Enter”时,我想重定向到 /search,但由于某种原因它不起作用。重定向到不同页面的正确方法是什么?
function App(){
const [inputVal, setInputVal] = useState('');
const [submitted, setSubmitted] = useState(false);
function handleInput(e) {
const query = e.target.value;
setInputVal(query);
}
function handleKeyDown(e) {
if (e.key === 'Enter') {
setSubmitted(true);
console.log(submitted);
console.log(inputVal);
}
}
return (
<div className='App'>
<div>
<h1>Movie</h1>
<input
onKeyDown={handleKeyDown}
onChange={handleInput}
placeholder='Search...'
/>
</div>
<Router>
<Switch>
<Route path='/' exact component={Home} />
{submitted && <Redirect to='/search' />}
<Route path='/search' component={Search} />
<Route path='/details/:id' component={Detail} />
</Switch>
</Router>
</div>
);
}
解决方案
它总是选择你的开关中的第一个,所以因为你在主页上,它可能永远不会看到下面的任何东西,这就是它不重定向你的原因。您要么需要将重定向放在主路由上方,要么尝试使用 react-router 中的“历史”功能,这将要求您在根级别设置它以使用,但您可以这样做
function handleKeyDown(e) {
if (e.key === 'Enter') {
history.push('/search')
console.log(submitted);
console.log(inputVal);
}
}
推荐阅读
- javascript - 如何在 JavaScript 中为 setInterval() 设置自定义时间?
- unreal-engine4 - 尝试在启用混沌的情况下打包虚幻引擎 4.23 时出现打包错误
- python - 如何在python中匹配乳胶书目?
- javascript - 如何使用 React Native 在 Firebase 实时数据库中按字段排序
- android - 限制 firebase 数据库以使用 firebase 规则创建新节点
- go - 从 GO 中的父/子对构建树结构
- r - 在R代码中使用样式器将T替换为TRUE,F替换为FALSE
- python - Google Places API 是否可以在用户输入时接受实时文本输入并生成地址/地点(Python)?
- authentication - Identity Server 4 等效于 Identity Server 3 IUserService AuthenticateExternalAsync 和 AuthenticateLocalAsync 方法
- c# - 实体框架不从其他表中删除行