我在ReactJS中遇到了一个问题,在我的应用程序中发生了不必要的重新渲染。我有一个侧边栏打开状态,我在Header组件中管理。我将set函数传递给Header以打开/关闭侧边栏,并将状态本身传递给侧边栏组件。
但是,组件内部的useEffect
每次都会重新呈现,即使侧边栏状态没有改变。
!!也在我的每一页,它的发生,每当我打开和关闭
function App() {
const [sidebarOpen, setSidebarOpen] = useState(true);
const handleSidebarOpen = () => {
setSidebarOpen(!sidebarOpen);
}
{isLogin && <Header openSidebar={handleSidebarOpen} />}
<Box display="flex">
<SidebarDrawerExample sidebarOpen={sidebarOpen} />
<Container>
<Routes>
<Route path="/now-playing" element={
<ProtectedRoute>
<MovieList category="now-playing" />
</ProtectedRoute>
} />
字符串
MovieList.tsx
useEffect(() => {
console.log('category', category);
}, []);
型
1条答案
按热度按时间ne5o7dgx1#
可能是因为SidebarOpen函数是在App组件内部创建的,当App重新呈现时,它可能会导致Header组件不必要的重新呈现。为了优化这一点,您可以使用useCallback钩子来记住SidebarOpen函数。
试试这个代码:
字符串