我正在使用axios库从本地json文件中获取数据,但是当我发出get请求时,它给了我错误404。 这是我的文件结构。
我正在使用这段代码来获取数据。
import React from 'react';
import axios from 'axios';
class Login extends React.Component{
constructor() {
super();
this.handleSubmit = this.handleSubmit.bind(this);
this.state = { username: null, password: null };
}
handleSubmit = (e)=>{
e.preventDefault();
var username=e.target.username.value;
var password=e.target.password.value;
axios.get('../data.json')
.then((res)=>{
console.log(res.data);
}).catch((err)=>{
console.log(err);
})
}
render(){
return(
<form onSubmit={this.handleSubmit}>
<input id="username" name="username" type="text" />
<input id="password" name="password" type="text" />
<button>Login!</button>
</form>
);
}
}
export default Login;
我该如何解决这个问题?
答案 0 :(得分:5)
如果使用 create-react-app 命令创建了此文件结构,则必须将json文件添加到公用文件夹中。然后像下面这样更改axios路径
handleSubmit = (e)=>{
e.preventDefault();
var username=e.target.username.value;
var password=e.target.password.value;
axios.get('./data.json')
.then((res)=>{
console.log(res.data);
}).catch((err)=>{
console.log(err);
})
答案 1 :(得分:3)
您是否在服务器上运行 JSON 文件。试试这个命令。
json-server -w -p 3001 data.json - 在端口 3001 上运行
import React from 'react';
import axios from 'axios';
class Login extends React.Component{
constructor(){
super();
this.handleSubmit = this.handleSubmit.bind(this);
this.state = {username: null, password: null };
}
handleSubmit = (e)=>{
e.preventDefault();
var username=this.refs.username.value;
var password=this.refs.password.value;
axios.get('../data.json')
.then((res)=>{
console.log(cb(res.data));//included the call back method
}
).catch((err)=>{
console.log(err);
}
)
}
render(){
return(
<form>
<input ref="username" type="text" />
<input ref="password" type="text" />
<input type="submit" value="Login" onClick={this.handleSubmit} />
</form>
);
}
}
export default Login;
希望这有效,经过试验和测试