【问题标题】:Checkbox input not displaying properly in conjunction with React-Table & React-Window combo复选框输入无法与 React-Table 和 React-Window 组合一起正确显示
【发布时间】:2021-08-02 21:09:19
【问题描述】:

我正在尝试组合 React-table 中的 Row SelectionVirtualized Rows 示例,但复选框未正确呈现,问题是当您单击它们时,您可以看到它们激活但勾号没有直到您向上或向下滚动才会出现,当您取消选中复选框时也会出现同样的情况。

我有一个工作示例here

我认为这与 React-Window 更新或重新渲染 div 的方式有关,但我不知道如何解决这个问题,非常感谢任何帮助。

【问题讨论】:

    标签: javascript reactjs react-table react-window


    【解决方案1】:

    您的 SelectCheckbox 组件道具未正确更新,您必须将您的 selectedRowIds 作为依赖项添加到您的 RenderRow 回调

    const RenderRow = React.useCallback(
        ({ index, style }) => {
          const row = rows[index];
          prepareRow(row);
          return (
            <div
              {...row.getRowProps({
                style
              })}
              className="tr"
            >
              {row.cells.map((cell) => {
                return (
                  <div {...cell.getCellProps()} className="td">
                    {cell.render("Cell")}
                  </div>
                );
              })}
            </div>
          );
        },
        [prepareRow, rows, selectedRowIds]
      );
    

    【讨论】:

    • 谢谢,不幸的是,标题复选框的功能不会更新表格中的其他复选框,通过单击标题复选框,它应该能够从表格中选择和取消选择所有内容,希望这是有道理的
    • 好的,我找到了一种新方法,删除最后的更改并添加 [prepareRow, rows, selectedRowIds] 作为您的 RenderRow 回调依赖项
    • 介意解释为什么添加依赖项会产生影响吗?
    • 它使用回调来渲染你的新数据并将其传递给 FixedSizeList,你的回调与一些依赖项一起工作,当你的依赖项发生变化时,你的数据会更新。在这种情况下,您不会将所选列表作为依赖项传递,并且您的数据不知道更改。
    • 很高兴,我的朋友。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多