reactjs - Axios 在 buttonClick 上发布,稍后在同一页面上呈现此数据
问题描述
我正在尝试制作一个可以对一本书进行评分的页面(现在只需单击按钮)。
const ratingHandler = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 5 });
};
<button onClick={ratingHandler}>Rate</button>
此代码运行良好,我可以在我的数据库中确定推送新评级。但后来,在同一页面上,我想呈现这些数据。为此,我正在使用:
<p>
Rate: {about.rating_count} / {about.rating_sum}
</p>
当然,我再次获取数据:
const [about, aboutWhat] = useState([]);
useEffect(() => {
axios
.get(`http://localhost:5000/api/book/${props.id}`)
.then((response) => aboutWhat(response.data));
});
评分计数 = 您按下按钮的次数。评级总和 = 总和。这两个工作正常。但我无法使用上面的代码呈现这个速率。任何人都知道如何呈现这些数据?
import Card from "../ui/Card";
import classes from "./MeetupItem.module.css";
import { Link } from "react-router-dom";
import { useEffect, useState } from "react";
const axios = require("axios");
const HighlightedQuote = (props) => {
const [about, aboutWhat] = useState([]);
useEffect(() => {
axios
.get(`http://localhost:5000/api/book/${props.id}`)
.then((response) => aboutWhat(response.data));
});
const removeHanlder = () => {
fetch(`http://localhost:5000/api/book/${props.id}`, {
method: "DELETE",
});
};
const ratingHandler = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 5 });
};
return (
<div className={classes.item}>
<Card>
<div className={classes.image}>
<img src={props.image_url} alt={props.title} />
</div>
<div className={classes.content}>
<p>
Rate: {about.rating_count} / {about.rating_sum}
</p>
<button onClick={ratingHandler}>Rate</button>
</div>
<button onClick={removeHanlder}>Delete</button>
<Link to={`/edit-book/${props.id}`}>
<button>Edit</button>
</Link>
</Card>
</div>
);
};
export default HighlightedQuote;
解决方案
您可以创建一个单独的函数来获取书籍数据,然后在需要时调用它。
说明:
- 创建
getBookData
方法useEffect
在里面和里面调用它ratingHandler
解决方案:
const [about, aboutWhat] = useState({});
useEffect(() => {
getBookData();
}, []);
const getBookData = () => {
axios
.get(`http://localhost:5000/api/book/${props.id}`)
.then((response) => aboutWhat({...response.data}));
}
const ratingHandler = async () => {
await axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 5 });
getBookData();
};
推荐阅读
- maven - 如何使用没有pom文件或settings.xml文件的maven直接将jar文件上传到nexus存储库?
- asp.net-core - 特定页面上的左侧导航栏利用每个页面的 MVC 模型数据
- python - 如果浏览器是无头的,脚本行为会发生变化
- machine-learning - 如何计算平均排名(MAR)?
- android - ListPreference 仅在第二次选择条目时更新其值
- reactjs - onClick里面的两个参数
- amazon-web-services - 使用负载均衡器为私有子网中的 RDS 路由流量
- python - Python更新csv文件
- bootloader - 启动时执行 Atmel 引导加载程序
- java - 如何使用 Selenium 计算和选择 Web 表中的某些行?