开发者问题收集

在 React Table 中是否有必要使用 useMemo?

2021-12-23
10391

我想知道有必要在React表中使用USEMEMO以获取列和数据(如果是),为什么是我的代码:

0066630327
1个回答

是的,建议使用 useMemo

useTable 钩子会获取列,如果您的组件因某种原因重新渲染,则会创建一个新的列数组(如果未使用 useMemo ),并且 useTable 将不必要地重新计算底层逻辑。

顺便说一句,您错误地使用了 useMemo ,因为 column 每次 TableSection 重新渲染时都会发生变化,并且它被用作 useMemo 的依赖项。如果将声明移到 useMemo 内部,则它仅在 data 更新时更改。所以,您应该这样使用它

const columns = useMemo(() => {
  if (!data[0].length) return [];

  return Object.keys(data[0]).map((key) => {
    const result = data[0][key]
      .replace(/([A-Z]+)/g, ' $1')
      .replace(/([A-Z][a-z])/g, ' $1');

    return {
      Header: result,
      accessor: key,
    };
  });
}, [data]);
Ramesh Reddy
2021-12-23