当前位置: 首页 > 知识库问答 >
问题:

尝试用API中的数据填充BootstrapTable

党祖鹤
2023-03-14

这里是javascript/react新手。我正试图用api中的数据从引导程序填充表。我制作了两个组件-仪表板。js和CustomTable。js,都是功能性的。就我所知,在仪表板组件上,我需要进行API调用——我已经使用useEffect和axios完成了这项工作。在桌子上。js我需要对列和数据使用useState。我想使我的表成为动态的,包括行和列。看看我的仪表板代码。js。

 const Dashboard = (props) => {
  let state = [(columns: []), (data: [])];

  useEffect(() => {
    axios
      .get(`https://reqres.in/api/users?page=2`)
      .then((res) => {
        console.log(res);
        setData(res.data);
      })
      .catch((err) => {
        console.log(err);
      });
  }, [data]);

  return (
    <div className="dashboard-content">
      <Header />
      <NewMessage />
      <CustomTable data={data} columns={columns} />
    </div>
  );
};

接下来,我得到了我的定制表。js功能组件,我尝试从我的父组件(Dashboard.js)传递道具,但我仍然无法确定下一步要做什么。

export default function CustomTable(props) {
  const [data, setData] = useState(props.data);
  const [columns, setColumns] = useState(props.columns);

  return (
    <div>
      <Table striped bordered hover>
        <thead>
          <tr>
            {columns.map((row) => {
              return <th>{row.name}</th>;
            })}
          </tr>
        </thead>
        <tbody>
          {data.map((row) => {
            return (
              <tr>
                <td>{row.id}</td>
                <td>{row.email}</td>
                <td>{row.first_name}</td>
                <td>{row.last_name}</td>
              </tr>
            );
          })}
        </tbody>
      </Table>
    </div>
  );
}

如果这一切听起来很愚蠢,我很抱歉,但我真的很想完成这项任务,继续学习。谢谢!

共有1个答案

程禄
2023-03-14

我们把这个换掉

let state = [(columns: []), (data: [])];

与:

const [data, setData] = useState({ cols: null, data: null });

要使您的仪表板组件看起来像这样:

const Dashboard = (props) => {
  const [data, setData] = useState({ cols: null, data: null });

  useEffect(() => {
    axios
      .get(`https://reqres.in/api/users?page=2`)
      .then((res) => {
        const cols = Object.keys(res.data.data[0]).map((i) => i);
        setData({ data: res.data.data, cols });
      })
      .catch((err) => {
        console.log(err);
      });
  }, []);

  return (
    <div className="dashboard-content">
      {data.data && <CustomTable data={data.data} cols={data.cols} />}
    </div>
  );
};

您的CustomTable元素实际上甚至不需要任何状态变量,因此我们可以使其看起来像这样:

const CustomTable = ({ data, cols }) => {
  return (
    <div>
      <Table striped bordered hover>
        <thead>
          <tr>
            {cols.map((j, i) => (
              <th key={i}>{j}</th>
            ))}
          </tr>
        </thead>
        <tbody>
          {data.map((row, i) => {
            return (
              <tr key={i}>
                <td>{row.id}</td>
                <td>{row.email}</td>
                <td>{row.first_name}</td>
                <td>{row.last_name}</td>
                <td>{row.avatar}</td>
              </tr>
            );
          })}
        </tbody>
      </Table>
    </div>
  );
};

这就是你所需要的。这里有一个沙箱供您使用:https://codesandbox.io/s/compassionate-architecture-s9dl2?file=/src/App.js

 类似资料:
  • 我在NetBeans IDE中工作,语言是Java,主要的类是JFrame Form。 我需要从Jtable获取所有数据并用这些数据填充数组。数组代表矩阵。 代码如下 我有一个错误 线程“AWT-EventQueue-0”java.lang.ClassCastException:java.lang.String无法转换为java.lang.Double 所以将表中的元素设置为双精度不是那么容易吗?

  • series(string $value,[ string $categories]) string $value $config = ['path' => './tests']; ​ $fileObject = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $fileObject->fileName('tutorial.xlsx'); $

  • factory 辅助函数 必须 使用 factory 方法来做数据填充,因为是框架提倡的,并且可以同时为测试代码服务。 运行效率 开发数据填充时,必须 特别注意 php artisan db:seed 的运行效率,否则随着项目的代码量越来越大,db:seed 的运行时间会变得越来越长,有些项目多达几分钟甚至几十分钟。 原则是: Keep it lighting speed. 只有当 db:seed

  • 问题内容: 我将JTable子类化,并使用DefaultTableModel建模我的表数据。下面的类设置JTable,并向模型添加一行。 在显示/可视化时,将引发以下异常: 我正在扯头发-我还无法找到这个非常简单的用例的根本原因。 问题答案: 我认为您需要在TableModel中添加列。您的代码将UI列添加到表中,但不将其添加到模型中

  • 简介 Laravel 可以用 seed 类轻松地为数据库填充测试数据。所有的 seed 类都存放在 database/seeds 目录下。你可以任意为 seed 类命名,但是更应该遵守类似 UsersTableSeeder 的命名规范。Laravel 默认定义的一个 DatabaseSeeder 类。可以在这个类中使用 call 方法来运行其它的 seed 类从而控制数据填充的顺序。 编写 See

  • 问题内容: 我有一个带有表,组合框的框架,我想通过组合框用数据库中的数据填充表,但是如果我与itemlistener一起使用,我不会看到没有itemlistener的表,然后我会看到包含数据的表(combob = combobox) 问题答案: 您有几个问题: 您使用不正确。您的代码可能可以运行(我不确定),但是它没有利用的功能。 从ResultSet读取数据的代码没有意义,因为您甚至根本没有从R