reactjs - 如果数组为空,则 react 表,不渲染

标签 reactjs

我有 4 个数组,它们从 API 获取数据,然后我用这些数组渲染 4 个表,这里的问题是,如果其中一个数组为空(后端没有数据),则所有表都不会渲染..

completedIssues: []
issuesNotCompletedInCurrentSprint: []
puntedIssues: []
issuesCompletedInAnotherSprint: []


const filteredIssuesCompletedInAnotherSprint = this.state.issuesCompletedInAnotherSprint.map(item => (
        {
            assignee: item ? item.assigneeName : 'Empty',
            id: item ? item.id : 'Empty',
            key: item ? item.key : 'Empty',
            type: item ? item.typeName : 'Empty',
            summary: item ? item.summary : 'Empty',
        }
    ));


<ResponseTable data={filteredCompletedIssues} />
<ResponseTable data={filteredIssuesNotCompletedInCurrentSprint} />
<ResponseTable data={filteredPuntedIssues} />
<ResponseTable data={filteredIssuesCompletedInAnotherSprint} />

响应表 它接收一个对象数组并将数据呈现到表中...

import React from 'react';
import ReactTable from 'react-table';
import "react-table/react-table.css";
 
export default class ResponseTable extends React.Component {

    constructor(props) { // Use Props
        super(props); // Use Props
        this.columnsBuilder = this.columnsBuilder.bind(this);

    }
    columnsBuilder () { //Remove data
        if(this.props.data == 0){
           return
        }
        const props = Object.keys(this.props.data[0]); //Use Props
        const columns = props.map( (item, index) => ({
            Header : item,
            accessor : item,
        }));

        const built = [
            {
                Header : this.props.header,
                columns,
            },
        ];        
        return built;
    }

        

    render() {


        return (
            <div>
                <ReactTable
                    data={this.props.data}
                    columns={this.columnsBuilder()} // Remove Props
                    defaultPageSize={10}
                    className="-striped -highlight"
                />
                <br />
            </div>
        );
    }
}

修复 ResponseTable columnsBuilder()

        if(this.props.data.length === 0) {
            return [{
                Header : this.props.header
            }];
        }

最佳答案

如果您使用的是 npm 模块react-table

import ReactTable from 'react-table';
import "react-table/react-table.css";

然后只需将属性 minRows 设置为 0 来标记 ReactTable,如下面的代码所示,以停止渲染空行

<ReactTable data={tableDataArray} minRows={0} />

关于reactjs - 如果数组为空,则 react 表,不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491257/

相关文章:

javascript - 如何使html属性的存在动态化?

javascript - 如何重用 react 表

javascript - 如何在 React Native 中从 PHP 获取 json

javascript - Material -UI |在 makeStyles 中使用 `theme`

javascript - 在边框不反射(reflect)的 css 中构建骨架屏幕

reactjs - 使用 immutable.js 进行 React shouldComponentUpdate 的最佳实现是什么

reactjs - 使用 Reactjs 的侧边栏

javascript - 在对象方法中使用变量导致 "Unknown Format"

javascript - 使用 create-react-app 时如何获取 electro.js 文件的 typescript

reactjs - Draft-js-plugins 中的自定义内联工具栏不起作用