Axios React - 不设置状态,我做错了什么?
Axios React - not setting state, what am I doing wrong?
所以这是代码,我只是想使用 axios 获取,然后将响应设置为状态。使用 ES6 箭头函数
import React, { Component } from 'react';
import './App.css';
import axios from 'axios';
class FieldValues extends Component {
constructor (props){
super(props);
this.state = {
todos: []
}
}
componentDidMount() {
axios.get(`127.0.0.1:8000/api/todos/`)
.then(res => {
this.setState({res.data});
});
}
render(){
console.log(this.state);
}
}
export default FieldValues;
这是我的本地主机通过 express 和 node 服务 json 的浏览器屏幕截图。
screenshot
还有我的错误 - 承认我已经在这里工作了几个小时是不是很难过?
编译失败
./src/App.js 出错
语法错误:意外标记,预期,(15:26)
13 | axios.get(`127.0.0.1:8000/api/todos/`)
14 | .then(res => {
> 15 | this.setState({res.data});
| ^
16 | });
17 | }
18 |
Error
@ ./src/index.js 13:11-27
我猜您从 API 返回的是一组待办事项。在那种情况下,你需要这个:
this.setState({todos: res.data});
setState
调用接收一个对象。创建对象时,需要给每个 属性 一个名称和一个值。你这样做的方式,你没有给你的 属性 一个名字。也许您已经看到了这样的代码,而这引起了混淆:
let name = "John";
let obj = {name};
之所以可行,是因为在 ES6 中,他们添加了一个功能,如果您的变量名也恰好是您想要的 属性 名称,您可以省略 {name: name}
重复。但是,在您的情况下,A) 它是 res
的嵌套 属性,因此该技巧不起作用,并且 B) 您希望它被称为 todos
.
所以这是代码,我只是想使用 axios 获取,然后将响应设置为状态。使用 ES6 箭头函数
import React, { Component } from 'react';
import './App.css';
import axios from 'axios';
class FieldValues extends Component {
constructor (props){
super(props);
this.state = {
todos: []
}
}
componentDidMount() {
axios.get(`127.0.0.1:8000/api/todos/`)
.then(res => {
this.setState({res.data});
});
}
render(){
console.log(this.state);
}
}
export default FieldValues;
这是我的本地主机通过 express 和 node 服务 json 的浏览器屏幕截图。
screenshot
还有我的错误 - 承认我已经在这里工作了几个小时是不是很难过?
编译失败
./src/App.js 出错 语法错误:意外标记,预期,(15:26)
13 | axios.get(`127.0.0.1:8000/api/todos/`)
14 | .then(res => {
> 15 | this.setState({res.data});
| ^
16 | });
17 | }
18 |
Error
@ ./src/index.js 13:11-27
我猜您从 API 返回的是一组待办事项。在那种情况下,你需要这个:
this.setState({todos: res.data});
setState
调用接收一个对象。创建对象时,需要给每个 属性 一个名称和一个值。你这样做的方式,你没有给你的 属性 一个名字。也许您已经看到了这样的代码,而这引起了混淆:
let name = "John";
let obj = {name};
之所以可行,是因为在 ES6 中,他们添加了一个功能,如果您的变量名也恰好是您想要的 属性 名称,您可以省略 {name: name}
重复。但是,在您的情况下,A) 它是 res
的嵌套 属性,因此该技巧不起作用,并且 B) 您希望它被称为 todos
.