我不太清楚为什么这个不起作用。我正在尝试使用axios从react发布到express。我学习了一个教程,学习了如何将react frontend连接到express服务器,它可以通过代理从服务器获取数据。但是,当我尝试从react发布数据到服务器时,它不起作用。我被提示有两个未捕获的错误(由于刷新而无法看到它们)然后该页面立即用投递到原始React页面的URL的表单响应来刷新页面。
client/package.json
{
"name": "syllabus.io",
"version": "0.1.0",
"proxy": "http://localhost:8000/",
...
client/Login.js
import '../App.css';
import React, {useState} from 'react';
import axios from 'axios';
function Login() {
const [data, setData] = useState({
email: "",
password: ""
});
function handleLogin(e) {
e.preventDafault();
console.log(data.email, data.password);
axios
.post('http://localhost:8000/api/login-post', data)
.then(() => console.log('Book Created'))
.catch(err => {
console.error(err);
});
}
function handleInput(e) {
const newData={...data};
newData[e.target.id] = e.target.value;
setData(newData);
}
return (
<div id="login" className="login">
<body>
<h1 id="title">Login</h1>
<div class="form">
<form onSubmit={(e) => handleLogin(e)}>
<input type="text" onChange={(e) => handleInput(e)} className="email" name="email" value={data.email} id="email" placeholder="Email"/>
<input type="text" onChange={(e) => handleInput(e)} className="password" name="password" value={data.password} id="password" placeholder="Password"/>
<input id="Login" className="Login" type="submit" value="Login"/>
</form>
</div>
</body>
</div>
);
}
export default Login;
server/server.js
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.get("/api", (req, res) => {
res.json({"user": ["userOne", "userTwo", "userThree"]})
})
app.post("/api/login-post", (req, res) => {
console.log(req.body)
res.send("Success")
})
app.listen(8000, () => {console.log('Server started on port 8000...')})
编辑:检查保留日志后,错误为
1条答案
按热度按时间fwzugrvs1#
e.preventDefault()中存在排印错误;在handleLogin函数中,这样你的表单提交时没有一个有效负载。我希望这能解决这个问题。