【发布时间】:2020-09-11 03:52:28
【问题描述】:
我是初学者。我正在尝试以简单的形式从 React.js 实现 POST 请求,但我不知道如何将 POST 请求发送到数据库。我想我也需要<form action="URL">。
任何帮助将不胜感激。
下面是来自 React.js(frontend) 的代码
import GameTestResult from './GameTestResult';
export default function App() {
const[data, setData] = useState([]);
const [formData, setFormData] = useState("");
useEffect (() => {
fetch('http://localhost:3000/game')
.then(res => res.json())
.then(result => setData(result.rows))
.catch(err => console.log("error"))
},[]);
const handleChange = event => {
setFormData(event.target.value)
}
const eventHandler = event => {
event.preventDefault();
setFormData("");
}
return (
<div className="App">
<form method="post" onSubmit = {eventHandler}>
<input value = {formData} onChange = {handleChange} />
<button type="submit">click</button>
</form>
{data && data.map((element, index)=>(
<GameTestResult
name = {element.name}
key={element.index}
/>
))}
</div>
);
}
这里是 express.js(backend) 的代码
var router = express.Router();
const pool = require("../config.js");
var cors = require('cors');
router.get("/game", cors(), (req, res) => {
pool
.query("SELECT * FROM game")
.then((data) => res.json(data))
.catch((e) => {
res.sendStatus(404), console.log(e);
});
});
router.post("/game", (req, res) => {
const { name } = req.body;
pool
.query('INSERT INTO game(name) values($1);', [name])
.then(data => res.status(201).json(data))
.catch(e => res.sendStatus(404));
});
module.exports = router;
【问题讨论】:
-
是的,API 有效。我没有错误,当我通过 Postman 进行测试时,Post 请求在后端工作。现在我无法使用 React.js 在 Form 中进行 Post 请求。在此代码中我没有错误,但单击表单“单击”按钮后未填充数据库
-
后端在 5000 端口,前端在 3000 端口,工作正常
-
API 调用正确,我至少可以在 React.js 中显示 GET 请求
-
究竟是什么问题?你能发出 GET 请求,但不能发出 POST 请求吗?下面的答案对你有用吗?
-
是的,这是我的问题。而且我不明白,他下面的“事件目标键”表达式是什么意思