开发者问题收集

Reactjs 如何显示我从 api 获取的数组数据?

2021-02-12
4068

我是 React 的新手,我正在尝试在我的应用程序中显示从数组中获取的数据。我使用 axios 发出获取请求,响应显示了一个数组。我尝试按照在互联网上找到的教程来显示这个数组,但没有成功。你能检查我的代码并告诉我哪里出了问题吗?如果我的代码完全错误,你能建议我一种显示数组的方法吗?提前谢谢了

class Dashboard extends Component {
    state = { data: [] };

    static propTypes = {
        history: PropTypes.object.isRequired,
    }
    
    constructor(props) {
        super(props);
    }

    getAllLibri = async () => {
        let JWTToken = localStorage.getItem("token");
        const response = axios
            .get("http://g0ptrkwkej5fhqfl.myfritz.net:8090/api/libri/getAll", {
                headers: { Authorization: `${JWTToken}` },
            })
            .then((response) => {
                console.log(response.data);
                console.log(JWTToken);
                this.setState({ data: response.data });
            })
            .catch((error) => console.error(`Error:  ${error}`));
    }



    render() {
        return (
            <Navbar bg="light" expand="lg">
                <Navbar.Brand href="#home">Benvenuto!</Navbar.Brand>
                <Navbar.Toggle aria-controls="basic-navbar-nav" />
                <Navbar.Collapse id="basic-navbar-nav">
                    <Nav className="mr-auto">
                        <Nav.Link href="">Inserisci libro</Nav.Link>
                        <NavDropdown title="Libri" id="basic-nav-dropdown">
                            <NavDropdown.Item onClick={this.getAllLibri} href="#action/3.1">
                                Visualizza libri
                  <div>{this.state.data.length}</div>
                            </NavDropdown.Item>
                        </NavDropdown>
                    </Nav>
                    <Form inline>
                        <Button onClick={this.doLogout} variant="outline-success">
                            Logout
              </Button>
                    </Form>
                </Navbar.Collapse>
            </Navbar>)
    }
}

这是我从获取请求中获取的数组数据

array i get from api

1个回答

获取数据后,您将获得一个普通数组。您可以使用一些数组方法,例如 map:

{ data.map((item, index) => { return( <div key={index+1}>{item.value}</div> ) } ) }

此代码生成与数组中的项目一样多的 <div>{item.value}</div>map() 是一个数组方法,它接收一个应用于数组中每个元素的函数,并返回新数组中的新元素,请参阅 this 。此例中的函数接收一个 item ,并在 div 元素中返回 item.value 。如注释中所述,您还需要传递一个 key prop(从 1 开始)。React 使用此值来识别组件,并在更改后检查是否必须重新渲染它。我使用 index 作为地图回调的参数,但您也可以使用类似 item.id 的东西。

SePeF
2021-02-12