reactjs - 在 React 中,如何显示使用数据库中特定项目的数据的页面
问题描述
在我的数据库中,我有多个练习,我将所有练习都显示在主页中。我希望能够单击“查看练习”按钮以查看有关该练习本身的信息。
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
通过 URL 查询参数将练习名称传递给组件。
在这种情况下,您可以使用useParams
来自react-router
. 所以组件变成:
import React from "react";
import { useParams } from "react-router";
function Exercise(props) {
const { name } = useParams();
return (
<div>
<h1>hi {name} !</h1>
</div>
);
}
export default Exercise;
并且name
参数的名称在路由声明中设置<Route path="/exercises/:name" component={Exercise} exact/>
如果您要显示的数据多于名称,则可以考虑在useEffect
钩子内进行 API 调用以获取详细信息。
推荐阅读
- c# - 如何为文本框使用掩码?
- mongodb - 我可以在猫鼬操作中使用 $addFields 添加的字段之一上使用 $lookup 吗?
- ios - 如何在 PageViewController 中隐藏可重用 ViewController 中的按钮?
- python - pytest `--tb` 选项可以重定向到日志文件而不是控制台吗?
- python - 创建一个事件以防止类似的输入触发相同的事件
- mod-fcgid - 部分结果有效但处理不完整 ERROR
- node.js - 嵌入 discord.js v12 中的 Markdown
- sql - 如何在 plsql 开发人员工具命令窗口中创建假脱机文件
- swift - 如何使用 cellWillDisplay/scrollViewDidScroll 更新 API 获取数据?迅速
- node.js - Mongoose 不保存更改 (updateOne)