Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我是否错误地使用了react.memo()_Javascript_Reactjs_React Usememo - Fatal编程技术网

Javascript 我是否错误地使用了react.memo()

Javascript 我是否错误地使用了react.memo(),javascript,reactjs,react-usememo,Javascript,Reactjs,React Usememo,问题: 我正在编写一个通用的分页表组件。它由四个子组件组成,即TableToolbar、TableHead、TableBody和TablePagination。在初始渲染时,这些组件会多次重新渲染。每当它们的一个同级组件更新共享父组件的状态时,它们也会不必要地重新渲染。但是,当我使用React.memo(TableToolbar)包装这些组件的导出语句时,它们只渲染一次,并且只在其道具更改时重新渲染。下面是一些代码来阐明我的意思: const PaginatedTable: React.FC&l

问题:

我正在编写一个通用的分页表组件。它由四个子组件组成,即
TableToolbar
TableHead
TableBody
TablePagination
。在初始渲染时,这些组件会多次重新渲染。每当它们的一个同级组件更新共享父组件的状态时,它们也会不必要地重新渲染。但是,当我使用
React.memo(TableToolbar)
包装这些组件的导出语句时,它们只渲染一次,并且只在其道具更改时重新渲染。下面是一些代码来阐明我的意思:

const PaginatedTable: React.FC<PaginatedTableProps> = (props) => {
    ...
    
    return (
         <>
            <TableToolBar 
               ...
            />
            <Table>
                <EnhancedTableHead
                    ...
                />
                <TableBody
                    ...
                />
            </Table>
            <TablePagination
                ...
            />
        </>
    );
}   
const PaginatedTable:React.FC=(道具)=>{
...
返回(
);
}   
例如,如果
TablePagination
更新任何
paginateTable
状态,如果我不在导出语句上使用
React.memo()
,其他三个组件也会重新呈现

问题:

我使用
React.memo()
是否合理?或者具有不必要的初始渲染,并且兄弟组件的重新渲染优于
React.memo()

带来的优化权衡,如果重新渲染导致问题,则重新渲染看起来是合理的(并且看起来像主要解决方案)。