【问题标题】:How do i render array with objects in JSX? [duplicate]如何在 JSX 中使用对象渲染数组? [复制]
【发布时间】:2021-05-02 22:29:37
【问题描述】:

点击“人”后,我从 api 请求数据。 我得到的数据将说明“车辆”,数据包括具有车辆“名称”和“型号”字段的对象。

const [车辆, setVehicles] = useState([]);

  useEffect(() => {
    setVehicles([]);
    const fetchVehicles = () => {
      let result = [];
      let personVehicle = person.vehicles;

      personVehicle?.map((el) => {
        return axios.get(el).then((response) => {
          result.push({ name: response.data.name, model: response.data.model });
          setVehicles(result);
        });
      });
    };
    fetchVehicles();
  }, [person]);

如何呈现此异步数据?我应该如何以正确的方式循环它?

我需要这样得到它:

<p>Name: {name from state}</p>
<p>Model: {model from state}</p>

【问题讨论】:

标签: javascript arrays reactjs asynchronous state


【解决方案1】:

也许只是将您获取的数据添加到状态,然后将其作为 ul 映射?

import React from "react";

const App = () => {
  useEffect(() => {
    fetchVehicles();
  }, []);

  const fetchVehicles = () => {
    axios.get("/api/vehicles").then((res) => {
      const vehicles = res.data;
      vehicles &&
        vehicles.map((v) => {
          setVehicles([...vehicles, { name: v.name, model: v.model }]);
        });
    });
  };

  return (
    <div>
      {vehicles ? (
        <ul>
          {vehicles.map((v) => {
            return (
              <li>
                <p>{v.name}</p>
                <p>{v.model}</p>
              </li>
            );
          })}
        </ul>
      ) : (
        <p>no vehicles</p>
      )}
    </div>
  );
};

export default App;

【讨论】:

  • 我不知道为什么,但是当你 setVehicles in useEffect 它只返回一个状态值,而不是两个。
  • @3stacks 哎呀,我想我搞砸了,请查看更新的代码,我认为您需要将车辆对象的所有响应数据放入一个数组中,然后对于每个车辆对象,地图和将它们保存到状态。我也忘了删除原来的 setVehicles([]) 函数。
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 2019-08-01
  • 2021-01-25
  • 1970-01-01
  • 2022-12-14
  • 2019-05-17
  • 2016-10-29
  • 2023-01-20
相关资源
最近更新 更多