javascript - 数据表函数不适用于 Reactjs

标签 javascript reactjs datatable

我正在使用数据表库轻松绘制表格。

我通过 Fetch API 获得了数据并渲染到表中,效果很好。但我不知道为什么 DataTable 功能喜欢排序、搜索、显示选项。

enter image description here

如您所见,从 API 获取数据并渲染为 HTML 效果很好,但是当我单击排序或搜索功能时,它会变成这样。

enter image description here

另外一个功能,比如每隔 10 秒从 API 获取一次数据并渲染到表格,效果也很好。

初始状态似乎存在一些问题。

import React, { Component } from 'react';
import './PostContainer.css';

class PostContainer extends Component {
  constructor(props) {
    super(props);
    this.state = {
      tableData: {
        status: '0000',
        data: {
          loading: { sell_price: 'loading', volume_7day: 'loading' },
        },
      },
    };
  }
  async componentDidMount() {
    this.getData();
    this.interval = setInterval(() => {
      this.getData();
    }, 10000);
  }

  getData() {
    fetch('https://api.bithumb.com/public/ticker/all')
      .then(res => {
        const data = res.json();
        return data;
      })
      .then(res => {
        this.setState({
          tableData: res,
        });
      })
      .catch(error => {
        console.error(error);
      });
  }

  componentWillUnmount() {
    clearInterval(this.interval);
  }

  render() {
    let data = this.state.tableData;
    let chart = [];
    console.log(data);
    if (data.status === '0000') {
      delete data.data['date'];
      for (let [key, value] of Object.entries(data.data)) {
        chart.push(
          <tr key={key}>
            <td>{key}</td>
            <td>{value.sell_price}</td>
            <td>{value.volume_7day}</td>
          </tr>
        );
      }
    } else if (
      data.status === '5500' ||
      data.status === '5600' ||
      data.status === '5900'
    ) {
      this.setState({
        tableData: {
          data: {
            ERROR: {
              sell_price: 'ERROR with API',
              volume_7day: 'ERROR with API',
            },
          },
        },
      });
    }
    return (
      <div className="Post">
        <table id="table" className="table table-striped table-bordered">
          <thead>
            <tr>
              <th>Coin Name</th>
              <th>Current Price</th>
              <th>Volume</th>
            </tr>
          </thead>
          <tbody>{chart}</tbody>
        </table>
      </div>
    );
  }
}

export default PostContainer;

可以访问DEMO直接地。我上传到了 Github Pages。

最佳答案

我可以想到要查找的 2 个问题

一。

如果您在屏幕截图中看到没有分页。

当我尝试在开发者控制台打开的情况下加载演示时。

它工作正常,您将看到分页,一次显示 10 条记录。

检查 index.jsDatatable 初始化代码的代码

$('#table').DataTable({
    order: [[1, 'desc']],
});

确保在 HTML 中加载数据后调用上述代码

b.

排序时您的状态值不会更新为实际值

 tableData: {
        status: "0000",
        data: {
            loading: {
                sell_price: "loading",
                volume_7day: "loading"
            }
        }
    }

关于javascript - 数据表函数不适用于 Reactjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56642648/

相关文章:

c# - 无法将 DBNull.Value 转换为类型 'System.DateTime' 。请使用可空类型。关于使用 Linq 查询

c# - 将两个 dd/mm/yyyy 字符串数组合并为一个,同时按顺序排列日期 asp.net c#

javascript - Q "noConflict()"的 TypeScript 定义 (d.ts)

javascript - 全局化 formatDate 函数返回 "numberSymbol is not a function"

javascript - 如何使用用户信息渲染表单(React + Redux)

html - 如何在 React Native 中对齐极左和极右的元素?

c# - 立即从 DataTable 中删除行,而无需循环,其中列具有 Null 值

javascript - 用于填充下拉列表的 Angular js 数据服务

javascript - Bootstrap 中输入的必需属性不起作用

reactjs - process.env 环境变量未定义