📌  相关文章
📜  在来自数据库的数组 reactjs 中渲染对象 ID - Javascript (1)

📅  最后修改于: 2023-12-03 15:08:03.553000             🧑  作者: Mango

在React中渲染从数据库中获取的对象ID数组

在React应用中,从数据库获取一个ID数组,并使用它来渲染对象,是一项常见的任务。以下是如何在React中完成这个任务的步骤:

  1. 定义一个组件并在其中获取对象ID数组
import React, { useState, useEffect } from 'react';

const ObjectList = () => {
  const [objectIds, setObjectIds] = useState([]);

  useEffect(() => {
    // 从数据库中获取对象ID数组
    fetch('/api/objects')
      .then(res => res.json())
      .then(data => setObjectIds(data.objectIds))
      .catch(err => console.error(err));
  }, []);

  return (
    <div>
      // 这里渲染对象列表
    </div>
  );
};

export default ObjectList;

在上面的代码中,我们定义了一个函数式组件 ObjectList,它使用 React 的 useState 钩子来创建一个名为 objectIds 的状态变量,并使用 useEffect 钩子从数据库中获取对象ID数组。注意在 useEffect 的依赖数组中传入一个空数组,这样 useEffect 只会在组件加载后运行一次,而无需担心循环渲染的问题。

  1. 在组件中渲染对象

在获取对象ID数组后,我们需要渲染每个对象。假设每个对象都拥有一个唯一的ID,我们可以遍历 objectIds 数组,并将每个ID传递给一个对象组件,让它来渲染该对象。

import React, { useState, useEffect } from 'react';

const ObjectList = () => {
  const [objectIds, setObjectIds] = useState([]);

  useEffect(() => {
    // 从数据库中获取对象ID数组
    fetch('/api/objects')
      .then(res => res.json())
      .then(data => setObjectIds(data.objectIds))
      .catch(err => console.error(err));
  }, []);

  return (
    <div>
      {objectIds.map(objectId => (
        <Object key={objectId} objectId={objectId} />
      ))}
    </div>
  );
};

export default ObjectList;

在上面的代码中,我们使用 map 函数来遍历 objectIds 数组,并为每个ID创建一个 <Object> 组件。注意在 <Object> 组件上设置一个 key 属性,这样在重新渲染组件时,React 可以快速地找到需要更新的组件。

  1. 定义对象组件并渲染对象信息

最后,我们需要定义一个对象组件来接受一个ID并渲染该对象的信息。

const Object = ({ objectId }) => {
  const [object, setObject] = useState(null);

  useEffect(() => {
    // 从数据库中获取对象
    fetch(`/api/object/${objectId}`)
      .then(res => res.json())
      .then(data => setObject(data.object))
      .catch(err => console.error(err));
  }, [objectId]); // 我们需要在这里将objectId作为依赖传入,确保每次更新时从数据库中获取最新的对象信息。

  if (!object) {
    return <div>Loading...</div>;
  }

  return (
    <div key={objectId}>
      <h2>{object.name}</h2>
      <p>{object.description}</p>
    </div>
  );
};

在上面的代码中,我们定义了一个名为 Object 的函数式组件,它使用了 useStateuseEffect 钩子来从数据库中获取对象信息。如果对象信息还未加载,则显示 "Loading..."。如果已经加载,则渲染对象的名称和描述。

以上是如何在React中渲染从数据库中获取的对象ID数组的步骤。这个任务需要我们使用一些React的核心概念,例如状态,生命周期和组件。在React中,我们可以将整个应用程序拆分成小而独立的组件,并通过将它们组合在一起来实现更复杂的功能。