Axios AJAX 在 React 中调用仅返回初始状态
Axios AJAX call in React returning only initial state
我正在尝试在 React 中使用 Axios 进行简单的 AJAX 调用,但我不知道哪里出错了。
这是我目前所拥有的(在我的组件中):
ComponentDidMount() {
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res
this.setState({ users });
});
}
render() {
console.log(this.state.users) // returns the **initialised EMPTY array**
return (
<div>
{this.state.users.map( user => <p>{user.name}</p>)} // returns nothing
</div>
)
}
我正在访问 .get()
方法中给出的 URL 处的一个简单数组(如有必要,请查看它的结构)。然后我链接 .then()
承诺并在箭头函数中传递 res
参数。
然后我将 users
变量分配给结果,并尝试将状态设置为这样。 所以此时我希望 this.state.users 等于结果数组。
然而...
A) 当我尝试 console.log(this.state.users) 时,它 returns 初始化的空数组
B) 当我尝试渲染数组的映射时,在每个对象上遍历 name
属性,同样,什么也没有。
我哪里错了?
部分打字错误(正如 Phi Nguyen 指出的那样),还有一些其他问题需要更正:
1) Axios 使用响应对象解析承诺。因此,要获得您需要做的结果:
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res.data; // Assuming the response body contains the array
this.setState({ users });
});
在此处查看有关响应对象的文档:https://github.com/mzabriskie/axios#response-schema
2) 如果出现异常(您的请求失败),您可能希望处理它而不是吞下它。所以:
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res.data; // Assuming the response body contains the array
this.setState({ users });
})
.catch(err => {
// Handle the error here. E.g. use this.setState() to display an error msg.
})
打字错误。它应该是 componentDidMount
而不是 ComponentDidMount
.
我正在尝试在 React 中使用 Axios 进行简单的 AJAX 调用,但我不知道哪里出错了。
这是我目前所拥有的(在我的组件中):
ComponentDidMount() {
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res
this.setState({ users });
});
}
render() {
console.log(this.state.users) // returns the **initialised EMPTY array**
return (
<div>
{this.state.users.map( user => <p>{user.name}</p>)} // returns nothing
</div>
)
}
我正在访问 .get()
方法中给出的 URL 处的一个简单数组(如有必要,请查看它的结构)。然后我链接 .then()
承诺并在箭头函数中传递 res
参数。
然后我将 users
变量分配给结果,并尝试将状态设置为这样。 所以此时我希望 this.state.users 等于结果数组。
然而...
A) 当我尝试 console.log(this.state.users) 时,它 returns 初始化的空数组
B) 当我尝试渲染数组的映射时,在每个对象上遍历 name
属性,同样,什么也没有。
我哪里错了?
部分打字错误(正如 Phi Nguyen 指出的那样),还有一些其他问题需要更正:
1) Axios 使用响应对象解析承诺。因此,要获得您需要做的结果:
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res.data; // Assuming the response body contains the array
this.setState({ users });
});
在此处查看有关响应对象的文档:https://github.com/mzabriskie/axios#response-schema
2) 如果出现异常(您的请求失败),您可能希望处理它而不是吞下它。所以:
axios.get('https://jsonplaceholder.typicode.com/users')
.then( res => {
const users = res.data; // Assuming the response body contains the array
this.setState({ users });
})
.catch(err => {
// Handle the error here. E.g. use this.setState() to display an error msg.
})
打字错误。它应该是 componentDidMount
而不是 ComponentDidMount
.