gpt4 book ai didi

node.js - react 钩子(Hook) : How to make a POST request to server

转载 作者:行者123 更新时间:2023-12-04 14:45:08 25 4
gpt4 key购买 nike

我是初学者。我试图以简单的形式实现来自 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;

最佳答案

您可以执行以下操作:

安装组件时获取游戏。并在提交表单时提交新游戏。

export default function App() {
const [data, setData] = useState([])
const [formData, setFormData] = useState('')

useEffect(() => {
fetchGames() // Fetch games when component is mounted
}, [])

const fetchGames = () => {
fetch('http://localhost:3000/game', {
method: 'GET',
})
.then((res) => res.json())
.then((result) => setData(result.rows))
.catch((err) => console.log('error'))
}

const saveGames = () => {
fetch('http://localhost:3000/game', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: formData, // Use your own property name / key
}),
})
.then((res) => res.json())
.then((result) => setData(result.rows))
.catch((err) => console.log('error'))
}

const handleSubmit = (event) => {
event.preventDefault()
saveGames() // Save games when form is submitted
}

const handleChange = (event) => {
setFormData(event.target.value)
}

return (
<div className="App">
{/* method="post" not needed here because `fetch` is doing the POST not the `form` */}
{/* Also, note I changed the function name, handleSubmit */}
<form onSubmit={handleSubmit}>
<input type="text" name="name" value={formData} onChange={handleChange} />
<button type="submit">click</button>
</form>

{data &&
data.map((element, index) => (
<GameTestResult name={element.name} key={element.index} />
))}
</div>
)
}

您可以阅读 this关于如何使用 fetch 和 this关于表单如何在 RecatJS 中工作。

关于node.js - react 钩子(Hook) : How to make a POST request to server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61986655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com