反应表失去了对过滤器的关注?

Jef*_*y K 3 javascript reactjs react-table react-window

我正在制作一个基于 react-table v7 和 react-window 的表格。我在这个网站上发现了其他问题,但他们几乎都在使用 v6 - 几乎不同。

问题是过滤器文本字段在我们输入后会失去焦点,即使我们只是触摸输入(我知道表格是重新渲染的)。但是我好几天都找不到任何解决方案。

请帮助并非常感谢。

这是代码沙盒

gdh*_*gdh 5

您正在使用uniqied()for keyie key={uniqid()}。因此,在每次重新渲染时,您都在创建一个新 id 并将其分配给key. 当keyprop 改变时,组件不会重新渲染,而是重新安装。因此失去了焦点。

下面应该工作。

<div {...getTableProps()} className={css.table} style={{ ...styles }}>
          <div className={css.thead}>
            {headerGroups.map((headerGroup, index) => (
              <div
                key={index}
                {...headerGroup.getHeaderGroupProps()}
                className={css.heading + " " + css.tr}
              >
                {headerGroup.headers.map((column, i) => (
                  <div
                    key={i}
                    className={
                      css.th + " " + (column.fixedWidth ? css.fixed__width : "")
                    }
                    style={{ ...getCellStyles(column) }}
                  >
                    <div className={css.th__inner}>
                      <div {...column.getHeaderProps()}>
                        <div
Run Code Online (Sandbox Code Playgroud)

代码的工作副本在这里:

https://codesandbox.io/s/table-key-issue-bpkly

快速说明 - 在上面的代码中,您可以使用在整个渲染周期中保持不变的唯一值。为了演示,我使用了索引。