reactjs - 使用来自 axios 的响应更新状态后渲染状态
问题描述
我想在我用来自 api 的另一个响应更新状态后渲染状态
在组件上确实安装了我从随机用户发出请求并将其存储在状态中,并且我创建了一个按钮,单击该按钮发出另一个请求并将来自 api 的另一个用户存储在状态中,我的问题是我似乎无法呈现新状态(单击console.log上的按钮后更新)我看到更新的状态,但是当我尝试渲染时,我只得到初始值,其余的显示为未定义
state = {
persons : []
}
async componentDidMount( ){
let response = await axios(`https://randomuser.me/api/?results=1`)
this.setState({
persons: response.data.results
})
}
update = async () => {
const response = await axios(`https://randomuser.me/api/?results=1`)
this.setState(prevState => ({
persons: [...prevState.persons, response.data.results]
}))
}
render(){
const test = this.state.persons.map( i => i.cell)
return(
<div>
{test}
<button onClick={this.update}>update</button>
</div>
)
}
解决方案
您需要设置正确的状态。响应是一个数组,所以你需要合并两个数组
update = async () => {
const response = await axios(`https://randomuser.me/api/?results=1`)
this.setState(prevState => ({
persons: [...prevState.persons, ...response.data.results]
}))
}
推荐阅读
- javascript - 如何在资金管理器应用程序中存储交易日期?
- spring-cloud - 如何在 Java 配置中添加自定义 Spring Cloud Gateway 过滤器?
- angular - Angular + core 如何将文件数组从 Angular 上传到 Dot Net Core
- python - Django 本地模块导入不起作用
- java - Tomcat9 上下文的 docBase 属性有问题
- typescript - 如何在 TypeScript 中使用计算属性名称?
- excel - 缺少从网络获取数据
- php - 根据PHP中的值获取两个数组的差异
- machine-learning - 为什么具有一个时间步长的 LSTM 会比 MLP 表现更好?
- php - codeigniter 将变量传递给同一控制器中的另一个函数得到警告非法字符串,即使变量正确传递