如何防止扩展的 React-Table 行在重新渲染时折叠?

Posted

技术标签:

【中文标题】如何防止扩展的 React-Table 行在重新渲染时折叠?【英文标题】:How to prevent expanded React-Table row from collapsing on re-render? 【发布时间】:2020-05-30 09:02:25 【问题描述】:

我有一个简单的react-table,它带有一个扩展的子组件,其数据与 Redux 状态对象相关联。

当子组件被扩展时,我触发一个 api 调用来获取一些额外的数据以延迟加载到 redux 存储中。 redux 存储使用新数据进行更新,并且子组件 DOM 也成功更新,但 问题是重新渲染后展开的行不会保持展开状态。它崩溃了。

即使在 redux 存储更新并触发重新渲染后,有没有办法让我的扩展行保持扩展?

【问题讨论】:

折叠组件的状态是否也由 Redux 处理?比如:isChildExpanded: boolean @r3dst0rm 不。redux 存储只有我的表和子组件的数据对象。但我想我知道你打算用这个去哪里☺ @LCIII - 提供一个问题的例子,可能只需要保持展开状态,但它可能更复杂,比如意外卸载。对于它的价值,我会将扩展状态放在 redux 中(个人意见),这听起来像是本地状态,除非您需要在挂载/卸载时保留它。 是的,我和@Adam 在一起。将展开的状态放入 Redux(我也将其放在此处),以将其包含在多个(重新)渲染中。 [如果你不喜欢 Redux 的想法,还有一些想法:也许也可以选择编写一个自定义钩子来实现同样的效果,但这听起来很讨厌。自定义上下文也可以用来解决这个问题。] 哎呀。我实际上是想说我会将展开状态放入 redux,除非你需要。 【参考方案1】:

对我来说,将 collapseOnDataChange 设置为 false 有效

您也可以尝试 freezeWhenExpanded 属性并将其设置为 true。

【讨论】:

【参考方案2】:

在配置中将 autoResetExpanded 设置为 false,更多详细信息 - https://react-table.tanstack.com/docs/api/useExpanded

【讨论】:

以上是关于如何防止扩展的 React-Table 行在重新渲染时折叠?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有graphql的react hooks时,按钮元素中的onClick不会触发react-table中的重新渲染

如何检查熊猫数据框行在各个列中是不是具有某些值,可扩展性

动态更新 react-table 中可用记录数的计数

如何使用命令行在Macos上打包Chrome扩展程序?

防止熊猫数据框标题行在for语句中重复

如何使我的命令行在具有扩展名(.sh)和名称如“weird.sh.sh.sh”的文件上工作