删除所有选定的行,即使我在其他页面中使用具有受控分页的 react-table

Remove all selected rows even though I'm in other page using react-table with controlled pagination

提问人:Federico Peralta 提问时间:12/2/2020 最后编辑:Federico Peralta 更新时间:9/5/2022 访问量:2170

问:

使用 react-table v7,即使我在其他页面中使用 hook-plugin useRowSelect 中的 toggleAllRowsSelected,我也很难尝试删除所有选定的行。

我在服务器端使用受控分页,正如文档所说,我设置为将 prop selectedRowIds 存储在状态中。因此,当我更改页面时,数据会发生变化,但我可以保持 selectedRowIds 不变。当我选中或取消选中一行时,它工作正常,但我无法弄清楚如何取消选中所有行,而不仅仅是当前页面中的行,这就是 toggleAllRowsSelected 正在做的事情。autoResetSelectedRows: false

我做错了什么,或者 toggleAllRowsSelected 回调中有错误?有没有办法操纵 react-table 的状态来手动更改 selectedRowIds 属性?

我是这样解决的..但我认为它可能会导致性能问题......

  const handleUnselectAll = () => {
    state.selectedRowIds = {};
    toggleAllRowsSelected(false);
  };

文档:

useRowSelecthttps://react-table.tanstack.com/docs/api/useRowSelect#userowselect

来自服务器端的数据https://react-table.tanstack.com/docs/faq#how-do-i-stop-my-table-state-from-automatically-resetting-when-my-data-changes

reactjs 分页 服务器端 react-table

评论


答:

1赞 Federico Peralta 12/9/2020 #1

我通过使用 stateReducer 选项解决了这个问题。

  stateReducer: (newState, action) => {
    switch (action.type) {
      case 'toggleAllRowsSelected':
        return {
          ...newState,
          selectedRowIds: {},
        };

      default:
        return newState;
    }
  }

编号: https://react-table-v7.tanstack.com/docs/api/useTable#usetable