【问题标题】:Material ui TableContext returns "undefined"Material ui TableContext 返回“未定义”
【发布时间】:2021-04-23 20:11:31
【问题描述】:

我正在尝试使用 TableContext 来检查子组件内的当前大小。但是,除了undefined,我很难得到任何东西:


    const Bar = () => {
        const tableContext = React.useContext(TableContext)
        const tableContextLvl2 = React.useContext(Tablelvl2Context)
        console.log(tableContext) // logs "undefined"
        console.log(tableContextLvl2) // logs "undefined"
        return <TableRow>
            <TableCell>
                hello
            </TableCell>
        </TableRow>
    }
    
    export const Foo = () => {
        return (
            <TableContainer>
                <Table>
                    <TableBody>
                        <Bar />
                    </TableBody>
                </Table>
            </TableContainer>
        )
    }

我在这里缺少什么?查看source 时,看起来&lt;Table&gt; 为其子组件提供了一个上下文,因此期望得到一些东西。

我使用的是 Material-ui 版本 4.11.3。

【问题讨论】:

标签: reactjs material-ui


【解决方案1】:

TableContext 不暴露直接使用。

要获得Table 的大小,我建议使用每次添加行或列时递增的状态。

或者,如果您想在Table 上创建分页,您可以到那里count

https://material-ui.com/api/table-pagination/

【讨论】:

  • 我明白了。我不想要表格中的项目数,我只想要作为 TableContext 一部分的“大小”,即此处描述的大小:material-ui.com/api/table 配置表格是否应该密集
  • @simen-andresen 你需要大小作为字符串,比如'small' | 'medium' ?如果是这种情况,您可以使用一个中间变量来保存该值,并且可以作为道具或新上下文传递给组件。 const tableSize = 'small'; &lt;Table size={tableSize}&gt; &lt;Component tableSize={tableSize} /&gt; &lt;/Table&gt;
  • 是的!知道如何在不明确将其作为道具传递的情况下获得它吗?
  • 我已经在上面编辑了我的答案,同时猜测你的答案。因此,具有该值的道具钻或上下文。
  • 我知道我可以将它作为道具传递,但我希望避免这样做。我们有一个相当复杂的表层次结构,并且必须将道具传递到表的子树中的每个组件中都会产生大量的道具钻探。在这里使用上下文只是一个更好的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2020-03-12
  • 2021-10-18
  • 2020-07-05
  • 2020-10-24
  • 1970-01-01
相关资源
最近更新 更多