P粉4208682942023-09-04 13:44:33
일반적으로 useMemo
的作用是在渲染期间缓存昂贵计算的值。然而,在您的情况下,您没有任何昂贵的渲染计算;每次输入更改时,您只是渲染一个非常大的树。实际上,因为所有状态都在App
구성 요소에서는 전체 앱이 매번 다시 렌더링됩니다.
React에서 이 문제를 최적화하는 방법은 가능할 때마다 구성 요소 렌더링을 건너뛰는 것입니다. 이렇게 하려면 페이지의 관련 없는 부분을 여러 구성 요소로 분할하세요. 로직을 분리한 후에는 컴포넌트 렌더링을 완전히 건너뛸 수 있는 다른 최적화 기술인 React.memo()
로 래핑합니다.
제가 보기에 가장 확실한 변화는 다음과 같습니다.
TodosDatos
移出App
구성 요소가 됩니다. 왜냐하면 이 구성 요소는 일정하고 렌더링할 때마다 재정의할 필요가 없기 때문입니다(메모리를 차지할 수 있음). <Table>
을 새 구성 요소에 넣고 <Table>
放入一个新的组件中,并使用React.memo()
를 사용하여 기억하세요. 모든 테이블 종속성 값을 새 구성 요소의 props에 전달해야 합니다. 여기에서 이러한 변경 사항을 구현했습니다: https://codesandbox.io/s/green-breeze-mmum6n?file=/src/App.js. 이제 입력이 거의 즉각적으로 수행된다는 것을 알 수 있습니다. 더 나은 성능을 얻기 위해 다른 곳에서 여러 최적화를 수행할 수도 있습니다.