反应错误-检查`t`的渲染方法

时间:2020-02-04 04:48:13

标签: reactjs mui-datatable

出于易于使用的原因,我从material-ui表切换到MuiDataTable,但是即使组件按预期运行,我仍看到警告。话虽如此,警告使我烦恼。

以下是该组件的代码:

public class TravelRequestDTO {

    private List<Pax> passangers; 
    private String leavingFrom;
    private String goingTo;
    private String onwarDate;
    private String onwardTime;
    private String returnDate;
    private String returnTime;
    private SegmentTypeEnum segmentType;
    private TravelModeEnum travelMode;
    private String purposeOfVisit;
     }


    public class Pax{

    private String name;
    private String age;
    private String mobile;
    }

如您所见,我正在使用customHeadRender制作自定义标头,也就是警告第一次出现的时间。除此之外,它运行正常。

The following is a screenshot of the warning that I am receiving

第33行是第一个customHeadRender

和往常一样,谢谢您

1 个答案:

答案 0 :(得分:0)

我必须在componentDidMount()函数中初始化标题(列名)

import React from "react";
import CsvDownload from 'react-json-to-csv'
import MUIDataTable from "mui-datatables";
import { MuiThemeProvider } from '@material-ui/core/styles';
import theme from '../theme';
import { messageService } from "../services/order-item-service";

export default class OrderItemComponent2 extends React.Component {
  state = {
    data: [],
    _columns: [],
    Header: [],
    totalCount: 10,
    counter: 0,
    options: {
      pageSize: 16,
      page: 0,
      filterType: "dropdown",
      selectableRows: false,
      responsive: "scroll",
      resizableColumns: true,
      className: this.name
    }
  };

  componentDidMount() {
    this.subscription = messageService.getMessage().subscribe((message) => {
        let result = message;

        this.setState({ data: result.message });
        this.setState({ Header: [
          {
            label: "Order ID",
            name: 'order_id',
            options: {
              className: 'first-col'
            }
          }, 
          {
            label: "Item ID",
            name: 'order_item_id',
            options: {
              className: 'sec-col'
            }
          },
          {
            label: "Prod ID",
            name: 'product_id',
            options: {
              className: 'bg-col'
            }
          },
          {
            label: "Div",
            name: 'code_division',
            options: {
              className: 'sm-col'
            }
          },
          {
            label: "Prod Code",
            name: 'code_product',
            options: {
              className: 'sm-col'
            }
          },
          {
            label: "Qty Due",
            name: 'quantity_due',
            options: {
              className: 'mid-col'
            }
          },
          {
            label: "Qty Sh",
            name: 'quantity_shipped',
            options: {
              className: 'mid-col'
            }
          },
          {
            label: "Price",
            name: 'price',
            options: {
              className: 'sm-col'
            }
          },
          {
            label: "Dt Sh",
            name: 'date_shipped',
            options: {
              className: 'mid-col'
            }
          },
          {
            label: "Dt Due",
            name: 'date_due',
            options: {
              className: 'mid-col'
            }
          },
          {
            label: "Cust ID",
            name: 'customer_id'
          },
          {
            label: "Ship Via",
            name: 'ship_via',
            options: {
              className: 'bg-col'
            }
          },
          {
            label: "Val Due",
            name: 'value_due',
            options: {
              className: 'sm-col'
            }
          },
          {
            label: "Val Sh",
            name: 'value_shipped',
            options: {
              className: 'sm-col'
            }
          },
          {
            label: "Dt Or",
            name: 'date_order',
            options: {
              className: 'bg-col'
            }
          },
          {
            label: "Dt Mod",
            name: 'date_modified',
            options: {
              className: 'bg-col'
            }
          }] });

        this.setState({
          totalCount: Math.ceil(this.state.data.length / this.state.pageSize)
        });

    });
  }

  componentWillUnmount() {
    // unsubscribe to ensure no memory leaks
    this.subscription.unsubscribe();
  }

  getOrderItem() {
    this.setState({ data: messageService.getMessage() });
  }

  render() {

    return (
      <div>
        <CsvDownload className='btn btn-primary' data={ this.state.data } />
        <MuiThemeProvider theme={theme}>
          <MUIDataTable
          title="Order Item Table"
          data={ this.state.data }
          columns={ this.state.Header }
          options={ this.state.options }
        />
        </MuiThemeProvider>
      </div>
    );
  }
}

The following is a screen shot of the fully functional data table, which includes sort, search, etc...