【问题标题】:react-table with filter and select column in the same tablereact-table 过滤器和选择列在同一个表中
【发布时间】:2022-07-11 01:00:20
【问题描述】:

我正在尝试使用 react-table 7.5 来创建一个带有搜索栏的表格并按行选择功能。 我分别有搜索和选择行的代码,但我不能让它一起工作。

这是我的表格组件:

 const Table = (...) => {
  const [data, setData] = useState(MOCK_DATA);
  const columns = useMemo(() => COLUMNS, []);

  const defaultColumn = React.useMemo(
    () => ({
      Filter: ColumnFilter,
    }),
    []
  );

  // table props
  let {
    getTableProps,
    getTableBodyProps,
    headerGroups,
    footerGroups,
    rows,
    prepareRow,
    setGlobalFilter,
    selectedFlatRows,
    state: { selectedRowPaths },
  } = useTable(
    {
      columns,
      data,
    },
    useFilters,
    (hooks) => {
        hooks.visibleColumns.push((columns) => [
          {
            id: "selection",
            Header: ({ getToggleAllRowsSelectedProps }) => (
              <Checkbox {...getToggleAllRowsSelectedProps()} />
            ),
            Cell: ({ row }) => <Checkbox {...row.getToggleRowSelectedProps()} />,
          },
          ...columns,
        ]);
      },
    useRowSelect,
    useGlobalFilter
  );

  const stateF = state;

  const { globalFilter } = stateF;

  const backButton = (e) => {
    e.preventDefault();
    setTable(true);
  };

  return (
    <>
      <div
        className="Table"
        }
      >
                <GlobalFilter filter={globalFilter} setFilter={setGlobalFilter} />

        
          {isFirstTable ? "next" : "submit"}
        </button>
        <table {...getTableProps()}>
          <thead>
            {headerGroups.map((headerGroup) => (
              <tr {...headerGroup.getHeaderGroupProps()}>
                {headerGroup.headers.map((column) => (
                  <th {...column.getHeaderProps()}>
                    {column.render("Header")}
                  </th>
                ))}
              </tr>
            ))}
          </thead>
          <tbody {...getTableBodyProps()}>
            {rows.map(row => {
              prepareRow(row);
              return (
                <tr {...row.getRowProps()}>
                  {row.cells.map((cell) => {
                    return (
                      <td {...cell.getCellProps()}>{cell.render("Cell")}</td>
                    );
                  })}
                </tr>
              );
            })}
          </tbody>
        </table>
        <pre>
          <code>
            {JSON.stringify(
              {
                selectedFlatRows: selectedFlatRows.map((row) => row.original),
              },
              null,
              2
            )}
          </code>
        </pre>
      </div>
    </>
  );
};

所以这是代码,主要问题是编译器说状态没有定义。 第 66:18 行:'state' 未定义 no-undef

我删除了一些与问题无关的额外行,例如 Table 接收的参数。

这是我在这里的第一个问题,所以我希望我足够清楚。谢谢!

【问题讨论】:

    标签: javascript reactjs electron react-table react-tabs


    【解决方案1】:

    使用全局过滤器(前端过滤器),您可以使用 selectedRowIds react-table In-build 变量轻松管理它。

    我已经在这个链接中实现了整个项目。

    https://codesandbox.io/s/admiring-wood-8rxinu?file=/src/components/DataTable.js:2212-2226

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 2023-03-22
      相关资源
      最近更新 更多