javascript - 在 React 中使用 axios 在浏览器中显示来自 api 的对象数组
问题描述
我试图在我的屏幕上写出一个包含来自 api 请求的名称的对象数组,但我不知道如何正确地做到这一点。我是新来的反应。这是 obj 数组的外观https://gyazo.com/82359c12374294d95c1d8d83b70c2e56
'''
import React from 'react';
import axios from 'axios';
export default class List extends React.Component{
state = {
peopleList: []
}
componentDidMount() {
const baseUrl = 'https://swapi.dev/api/';
axios.get(baseUrl + 'people')
.then(response => {
console.log("axios response: ", response.data)
const names = response.data.results.map(obj => ({ name: obj.name}));
this.setState( {names})
})
}
render(){
return(
<main>
<h1>Names: </h1>
<ul>
{this.state.peopleList.map(person => <li key="person">{person.name}</li>)}
</ul>
</main>
)
}
}
´´´
解决方案
请检查完整的示例:
import React, {useEffect, useState} from "react";
import axios from 'axios';
function PostListPage() {
const [posts, setPost] = useState([]);
let signal = axios.CancelToken.source();
useEffect(() => {
let isSubscribed = true;
axios.get('https://jsonplaceholder.typicode.com/posts', {
cancelToken: signal.token,
})
.then(res => {
const posts = res.data;
setPost(posts);
}).catch(err => {
console.log(err);
});
return function cleanup() {
isSubscribed = false;
signal.cancel('Api is being canceled');
}
}, []);
return (
<React.Fragment>
<ul>
{
posts.map(post => <li key={post.id}>{post.title}</li>)
}
</ul>
</React.Fragment>
);
}
export default PostListPage;
推荐阅读
- monaco-editor - 如何在自定义令牌提供程序中启用多行匹配
- python - 参数 1 必须是类型,而不是 super() 调用上的 pygame.surface
- ruby - 一次初始化多个对象?
- jquery - 根据选择使用 Fieldset 禁用和隐藏表单元素
- flutter - 为什么我的一种状态在我的测试期间没有被触发
- c++ - SortedVector 没有正确调用函数?
- flask - 如何在事件处理程序之外发出 socketio 消息
- c - 即使向量不同,也多次使用相同的函数
- swift - 如何在符合协议的非 RawRepresentable 枚举上实现 CustomStringConvertible?
- node.js - mongoose 加载 json 会删除 Schema Types ObjectId 数据吗?