javascript - 从 api 获取数据后在 React 中显示嵌套对象?

标签 javascript json reactjs object

来自 json 占位符的用户数据将地址作为用户对象内部的对象,我正在尝试找出如何显示该数据以用于学习和理解目的

import React, { useState, useEffect } from "react";
import "./App.css";

const App = () => {
  const [users, setUsers] = useState([]);
  const [user, setUser] = useState({});
  useEffect(() => {
    getUsers();
    getUser();
    //eslint-disable-next-line
  }, []);

  const getUsers = async () => {
    const res = await fetch("https://jsonplaceholder.typicode.com/users");
    const data = await res.json();
    setUsers(data);
  };

  const getUser = async () => {
    const res = await fetch("https://jsonplaceholder.typicode.com/users/1");
    const data = await res.json();
    setUser(data);
    console.log(data);
  };

  return (
    <div className="App">
      <h3 style={{ marginBottom: "5px" }}>
        Getting an Array of users from an Api
      </h3>
      <ul>
        {users.map(user => (
          <li style={{ marginBottom: "5px", paddingLeft: "10px" }}>
            Name:{user.name} <br />
            Email:{user.email}
          </li>
        ))}
      </ul>
      <div className="card" style={{ width: "400px" }}>
        <h3>Name: {user.name}</h3>
        <p>Email: {user.email}</p>

      </div>
    </div>
  );
};

export default App;

到目前为止,一切正常

当我尝试访问用户地址时,它会抛出错误

<div className="card" style={{ width: "400px" }}>
        <h3>Name: {user.name}</h3>
        <p>Email: {user.email}</p>
        <p>Address: {user.address.street}
      </div>

如何访问和对象内的对象?

最佳答案

您必须设置初始用户。
由于呈现 null 问题。

const defaultUser = {
    name: "",
    email: "",
    address: {
        street: ""
    }
};

const [users, setUsers] = useState([defaultUser]);
const [user, setUser] = useState(defaultUser);

关于javascript - 从 api 获取数据后在 React 中显示嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59534363/

相关文章:

javascript - 使用 Promise 更新 Json 值

javascript - 客户端路由(使用 react-router)和服务端路由

JavaScript - 在重定向之前记录

javascript - import {module} 和 import module 的区别

javascript - 将散列数据作为散列的 key 传递再次返回不正确的结果

javascript - Spring Ajax 列表返回但对象为空

javascript - 将数据从 JSON 动态放入 HTML,同时排除键

javascript - 有什么方法可以在 DOM 修改后重新运行 jQuery 插件吗?

reactjs - 在 React 和 Redux 中如何使双冒号起作用

css - 带有 CSS 模块的普通 CSS