【发布时间】:2021-01-11 08:19:28
【问题描述】:
在我的数据库中,我有多个练习,我将所有练习都显示在主页上。我希望能够单击“查看练习”按钮以查看有关该练习本身的信息。
App.js 路由代码:
const App = () => {
return (
<main>
<Switch>
<Route path="/" component={MainPage} exact />
<Route path="/exercises/:name" component={Exercise} exact/>
<Route component={Error} />
</Switch>
</main>
);
};
应该显示特定练习的代码组件:
import React from "react";
function Exercise(props) {
return (
<div>
<h1>hi {props.name} !</h1>
</div>
);
}
export default Exercise;
我如何显示练习列表:
function Exercises() {
const [exercise, setExercise] = useState([]);
useEffect(() => {
const getAPI = async () => {
const response = await fetch('http://localhost:8080/');
const data = await response.json();
try {
console.log(data);
setExercise(data);
} catch (error) {
console.log(error);
}
};
getAPI();
}, []);
return (
<div>
<h2 id="exercises">List of Exercises</h2>
<Row>
{exercise.map((data) => (
<ExerciseCard
key = {data._id}
name = {data.name}
img = {data.image}
/>
))}
</Row>
</div>
);
}
export default Exercises;
按钮链接:
<Link to= {{
pathname: `/exercises/${props.name}`
}}
>
【问题讨论】:
-
您是否只是试图在
Exercise组件的标题中显示练习名称?或者你想要整个data/exercise对象?如果您只需要name路由参数,那么使用useParams 在路由组件中访问它。
标签: reactjs react-router