reactjs - 在 axios.post 之后属性保持未定义
问题描述
我有一个简单的代码:
const ratingHandler1 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 1 });
console.log(props);
};
它在按钮点击时评价一本书。虽然我看到 Postgree 数据库中添加的值,但使用这个 console.log 我可以在浏览器中看到,该属性保持未定义。有谁知道为什么?
该组件的完整代码:
import classes from "./HighligtedBook.module.scss";
import { Link } from "react-router-dom";
const axios = require("axios");
const HighlightedBook = (props) => {
const removeHanlder = () => {
axios.delete(`http://localhost:5000/api/book/${props.id}`);
alert("Książka usunięta");
};
const ratingHandler5 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 5 });
};
const ratingHandler4 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 4 });
};
const ratingHandler3 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 3 });
};
const ratingHandler2 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, { score: 2 });
};
const ratingHandler1 = () => {
axios.post(`http://localhost:5000/api/book/${props.id}/rate`, {
score: 1,
});
console.log(props);
};
return (
<div className={classes.item}>
<div className={classes.image}>
<img src={props.image_url} alt={props.title} />
</div>
<div className={classes.content}>
<h3 className={classes.title}> {props.title}</h3>
<h4> {props.author}</h4>
<h4> {props.release_date}</h4>
<h4> {props.genre}</h4>
<p className={classes.opis}>Opis: {props.description}</p>
<div className={classes.actions}>
<button onClick={ratingHandler5}>Oceń na 5</button>
<button onClick={ratingHandler4}>Oceń na 4</button>
<button onClick={ratingHandler3}>Oceń na 3</button>
<button onClick={ratingHandler2}>Oceń na 2</button>
<button onClick={ratingHandler1}>Oceń na 1 </button>
<button onClick={removeHanlder}>Usuń</button>
<Link to={`/edit-book/${props.id}`}>
<button>Edytuj</button>
</Link>
</div>
</div>
</div>
);
};
export default HighlightedBook;
解决方案
从你描述得很糟糕的情况来看。你的问题可能是这样的:
您的 API 运行良好。它只是做它的工作。你的前端也是如此。这是您编码的内容,无法达到您想要的目的。您需要在axios
post 函数中添加一个回调,以便在请求成功后从 Postgres 读取新分数。该回调将调用状态挂钩来更新客户端浏览器中显示的分数。除非您告诉前端,否则前端不会自行更新
推荐阅读
- javascript - vue3 打字稿问题。什么类型的延迟加载vue-router?
- python - 寻找重组熊猫数据框的有效方法
- python - 是否可以为部分 openmp 部分 mpi 程序分配资源?
- python - 将具有逗号分隔字符串的 2 列合并为 pandas 中的 1 列
- r - 在 R 中绘制逻辑回归的预测线
- office-js - 带有 delayForCellEdit 的 Excel.run 不能嵌套工作
- html - 使用 i 类标签更改 CSS
- javascript - 按对象键正则表达式过滤数组
- capistrano - 尝试运行 cap deploy:restart 时用于 nil 的未定义方法 []
- r - 使用 dplyr R 逐行查找第二大值