【发布时间】:2020-10-28 05:02:29
【问题描述】:
我正在学习 React Router,我有一个简单的导航栏组件,其中有一个输入/搜索栏。单击搜索时,它将搜索 API,我想使用 React Router 路由到新页面(/results)以显示结果。
我希望在单击提交按钮时显示我的组件SearchResults。
这是我的代码:
const Search = () => {
const apiKey = 'xxxxxx';
const [input, setInput] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
searchAPI();
};
const searchAPI = async () => {
const res = await fetch(`http://www.omdbapi.com/?apikey=${apiKey}&s=${input}`);
const data = await res.json();
console.log(data);
};
return (
<form>
<input onChange={(e) => setInput(e.target.value)}></input>
<Link to="/results">
<button type="submit" onClick={handleSubmit}>
search
</button>
</Link>
</form>
);
};
这些是我的路线:
function App() {
return (
<>
<Router>
<Nav />
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
<Route path="/results" component={SearchResults} />
</Router>
</>
);
}
我希望<Link to="/results"> 在提交时自动链接到 /results 页面,但事实并非如此。任何帮助将不胜感激!
【问题讨论】:
-
我认为
e.preventDefault()阻止了链接,您尝试删除它吗? -
你还必须去掉
form标记,无论如何这里似乎都不需要。
标签: javascript reactjs react-router react-router-dom