React-Table 列隐藏
React-Table Column Hiding
总的来说,我对 React 和 Web 开发有点陌生。
我有一个方案,要在 React 中创建一个 table,并创建一个框,该框将 启用 show/hide columns 和 select all checkbox 将显示或隐藏所有列 except a "NAME_ID" 列。
我可以通过 useTable()
钩子和 column.getToggleHiddenProps()
钩子的解构调用方法实现前面的部分。
但我无法完成第二部分,我知道我们有 getToggleHideAllColumnsProps()
但除了要求的 NAME_ID 列 .
任何帮助或建议都将非常有用!!
有一种方法可以做到这一点。我希望这是一个传递给 Columns 对象的布尔值,但我们只拿我们能得到的。
I forked the original Hidden Columns sandbox as a proof of concept.相关部分是:
- 您需要创建自己的 onClick 处理程序,而不是使用默认的
getToggleHideAllColumnsProps
道具。 column
公开了一个 toggleHidden
方法,该方法指示用户尝试切换该特定列时的行为。有点令人沮丧的是,即使您为列实现了 toggleHidden
方法,getToggleHideAllColumnsProps
也会完全忽略它,并切换其隐藏状态。
<div>
<IndeterminateCheckbox
onClick={() => allColumns.forEach(c => c.id !== "firstName" && c.toggleHidden())}
/>
Toggle All
</div>
幸运的是,这是一个相当简单的函数——只需遍历您的 columns
对象并在每个对象上调用 toggleHidden
。为了稳健性,我包含了一个检查以防止在所需的列上调用它,但从技术上讲你不需要这样做。
- 不知何故,您需要为所需的列定义
toggleHidden
函数。我在复选框的渲染方法中完成了它,但如果你在其他地方这样做,它的工作原理是一样的。当为列定义 toggleHidden
函数时,它会按预期覆盖默认行为。因此,您可以只拥有一个 returns null 的空函数,这将禁用手动关闭该列的能力。
allColumns.map((column) => {
if (column.id === "firstName") {
column.toggleHidden = () => null;
}
return ( /* ...jsx... */ );
})
总的来说,我对 React 和 Web 开发有点陌生。
我有一个方案,要在 React 中创建一个 table,并创建一个框,该框将 启用 show/hide columns 和 select all checkbox 将显示或隐藏所有列 except a "NAME_ID" 列。
我可以通过 useTable()
钩子和 column.getToggleHiddenProps()
钩子的解构调用方法实现前面的部分。
但我无法完成第二部分,我知道我们有 getToggleHideAllColumnsProps()
但除了要求的 NAME_ID 列 .
任何帮助或建议都将非常有用!!
有一种方法可以做到这一点。我希望这是一个传递给 Columns 对象的布尔值,但我们只拿我们能得到的。
I forked the original Hidden Columns sandbox as a proof of concept.相关部分是:
- 您需要创建自己的 onClick 处理程序,而不是使用默认的
getToggleHideAllColumnsProps
道具。column
公开了一个toggleHidden
方法,该方法指示用户尝试切换该特定列时的行为。有点令人沮丧的是,即使您为列实现了toggleHidden
方法,getToggleHideAllColumnsProps
也会完全忽略它,并切换其隐藏状态。
<div>
<IndeterminateCheckbox
onClick={() => allColumns.forEach(c => c.id !== "firstName" && c.toggleHidden())}
/>
Toggle All
</div>
幸运的是,这是一个相当简单的函数——只需遍历您的 columns
对象并在每个对象上调用 toggleHidden
。为了稳健性,我包含了一个检查以防止在所需的列上调用它,但从技术上讲你不需要这样做。
- 不知何故,您需要为所需的列定义
toggleHidden
函数。我在复选框的渲染方法中完成了它,但如果你在其他地方这样做,它的工作原理是一样的。当为列定义toggleHidden
函数时,它会按预期覆盖默认行为。因此,您可以只拥有一个 returns null 的空函数,这将禁用手动关闭该列的能力。
allColumns.map((column) => {
if (column.id === "firstName") {
column.toggleHidden = () => null;
}
return ( /* ...jsx... */ );
})