javascript - Material ui 表行复选框不显示

标签 javascript reactjs material-ui

我在单独的文件中为我的 React 应用使用 Material UI 创建了一个表格。

交易表.js

const DummyTableRow = (props) => {
    let myRows = props.trades.map((trade, index) => {
        return <TableRow>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[0]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[1]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[2]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[3]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[4]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[5]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[6]}</TableRowColumn>
        </TableRow>
        });
    return myRows;
}

const TradesTable = (props) => {
    return(
        <Table>
            <TableHeader>
                <TableRow>
                    <TableHeaderColumn>Trade date</TableHeaderColumn>
                    <TableHeaderColumn>Commodity</TableHeaderColumn>
                    <TableHeaderColumn>Side</TableHeaderColumn>
                    <TableHeaderColumn>Qty</TableHeaderColumn>
                    <TableHeaderColumn>Price</TableHeaderColumn>
                    <TableHeaderColumn>CounterParty</TableHeaderColumn>
                    <TableHeaderColumn>Location</TableHeaderColumn>
                </TableRow>
            </TableHeader>
        <TableBody>
            <DummyTableRow trades={props.trades}/>
        </TableBody>
    </Table>
    );
}

module.exports = TradesTable

该表的行是从组件的 props 填充的。

此表作为 Material UI 的一部分在其他一些组件中使用 <AppBar>组件。

<AppBar style={{backgroundColor: 'White'}} 
                    iconElementLeft={<TradesTable trades={this.props.trade}/>} 
                    ....
                    ....

this.props.trade 的值来自商店。

这里的问题是表头显示复选框,但行不显示复选框 我已阅读文档,默认行为是显示复选框。

Wham 我在这里做什么,行的复选框没有显示?

enter image description here

最佳答案

Here issue is with DummyTableRow :

当你尝试这样做时会发生什么:

<TableBody>
   <DummyTableRow trades={props.trades}/>
</TableBody>

它的作用是

<TableBody>
   <DummyTableRow>
        <TableRow>
            <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[0]}</TableRowColumn>
            ...
        </TableRow>
        ...
   <DummyTableRow>
</TableBody>

这不是很正确的结构,应该是这样的

<TableBody>
    <TableRow>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[0]}</TableRowColumn>
        ...
    </TableRow>
    ...
</TableBody>

Solution for this :

创建一个简单的函数而不是无状态组件

const getRow = (data) => {
    let myRows = data.trades.map((trade, index) => {
        return <TableRow>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[0]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[1]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[2]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[3]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[4]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[5]}</TableRowColumn>
        <TableRowColumn key={index} style={{fontSize:'10px'}}>{trade[6]}</TableRowColumn>
        </TableRow>
        });
    return myRows;
}

像这样使用它

<TableBody>
   { getRow(props.trades) }
</TableBody>

WORKING DEMO (同时有问题和解决方案)

关于javascript - Material ui 表行复选框不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449456/

相关文章:

javascript - 如何使用mongoose从mongoDB中获取一定数量的对象? ( Node .js)

reactjs - 无提示更新错误帧窗口在刷新 token 上超时

reactjs - Next.js: ./node_modules/next/dist/client/dev/amp-dev.js

reactjs - 将material-ui中的 <TextField/> 组件与react-hook-form一起使用会显示警告

node.js - Material-ui 布局在生产构建后被打乱

javascript - 原型(prototype)和对象属性。为什么他们的行为不同?

javascript - 使用 $ 和 { 时将 JSON 解析为 YAML 失败

javascript - 检查一个值是否在一个数字范围内

javascript - 意外的 token React-Redux

javascript - React 如何从 json 数据以表单形式呈现嵌套下拉列表?