【问题标题】:How to hide/show column based on if statement using Material-ui?如何使用 Material-ui 根据 if 语句隐藏/显示列?
【发布时间】:2020-04-30 15:19:06
【问题描述】:

我有以下代码,我想根据 if 语句隐藏或显示 TableCell,我该怎么做?

我正在使用 MATERIAL-UI:https://material-ui.com/

  <TableBody>
                {Object.entries(servicesCode).map(([key, value]) => (
                  servicesValueTotal[key] = ((servicesValue[key] + servicesTaxe[key])),
                  <TableRow key={servicesCode[key]}>
                    <TableCell component="th" scope="row">
                      {key}
                    </TableCell>
                    <TableCell align="center" >{servicesCode[key]}</TableCell>
                    <TableCell align="center">{servicesValue[key]}</TableCell>
                    <TableCell align="center">{servicesTaxe[key]}</TableCell>
                    <TableCell align="center">{servicesValueTotal[key]}</TableCell>
                    <TableCell align="center">{servicesTec[key]}</TableCell>
                    <TableCell align="center">{servicesClient[key]}</TableCell>
                    <TableCell align="center">{servicesStatus[key]}</TableCell>
                  </TableRow>
                ))}
              </TableBody>

【问题讨论】:

    标签: javascript reactjs material-ui show-hide


    【解决方案1】:
    let showTableCell = (true) ? true : false; // you can have a single line condition or multiple line condition using if and else here.
    
     <TableBody>
                    {Object.entries(servicesCode).map(([key, value]) => (
                      servicesValueTotal[key] = ((servicesValue[key] + servicesTaxe[key])),
                      <TableRow key={servicesCode[key]}>
                        <TableCell component="th" scope="row">
                          {key}
                        </TableCell>
                        {showTableCell && <TableCell align="center" >{servicesCode[key]}</TableCell>}
                        // or you could also add condition here as well
                        {showTableCell ? <TableCell align="center">{servicesValue[key]}</TableCell> : "Some other data here"}
                        <TableCell align="center">{servicesTaxe[key]}</TableCell>
                        <TableCell align="center">{servicesValueTotal[key]}</TableCell>
                        <TableCell align="center">{servicesTec[key]}</TableCell>
                        <TableCell align="center">{servicesClient[key]}</TableCell>
                        <TableCell align="center">{servicesStatus[key]}</TableCell>
                      </TableRow>
                    ))}
                  </TableBody>
    

    【讨论】:

      【解决方案2】:

      为什么不使用称为条件渲染的功能?

      {condition &amp;&amp; &lt;Component /&gt;}, 例如{condition &amp;&amp; &lt;TableCell align="center" &gt;{servicesCode[key]}&lt;/TableCell&gt;}

      注意:由于您使用表格来显示数据,它应该有固定数量的th 标签 - 表格标题,因此完全删除表格单元格可能是一个不好的解决方案。

      您也可以根据条件将表格单元格留空,例如 &lt;TableCell align="center" &gt;{condition &amp;&amp; servicesCode[key]}&lt;/TableCell&gt; 或喜欢&lt;TableCell align="center" &gt;{condition ? someVariable : "No data here"}&lt;/TableCell&gt;

      【讨论】:

      • 我是新手,类似'{ if (filters.user_id!=null) && {servicesCode[key]}}'工作吗?
      • 当使用内联逻辑运算符时,if 语句不是必需的。相反,像这样的东西可以解决问题{ filters.user_id!=null &amp;&amp; &lt;TableCell align="center"&gt;{servicesCode[key]}&lt;/TableCell&gt;}。请参阅Conditional rendering
      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多