React:如何使用innerHTML卸载子节点?
React: How to use innerHTML to unmount child nodes?
我说页面上有大约 30K+ 个组件。单击一个按钮后,我通过条件渲染卸载了所有 30K+ 组件,这在 10 多秒左右变得非常慢并导致页面挂起。另一方面,在父容器上将 innerHTML 设置为 "" 可以在几毫秒内完成。但 innerHTML 方法的问题是 React 无法知道这些组件是否已从 DOM 中删除,因此在下一次渲染时,所有 30K+ 组件都会重新出现。有没有什么方法可以使用 innerHTML 删除所有节点,但仍然确保 React 知道所有组件都已卸载?
我能够使用 Leaflet.js 的 clearLayers 方法清除所有标记节点。这修复了卸载缓慢问题。
我说页面上有大约 30K+ 个组件。单击一个按钮后,我通过条件渲染卸载了所有 30K+ 组件,这在 10 多秒左右变得非常慢并导致页面挂起。另一方面,在父容器上将 innerHTML 设置为 "" 可以在几毫秒内完成。但 innerHTML 方法的问题是 React 无法知道这些组件是否已从 DOM 中删除,因此在下一次渲染时,所有 30K+ 组件都会重新出现。有没有什么方法可以使用 innerHTML 删除所有节点,但仍然确保 React 知道所有组件都已卸载?
我能够使用 Leaflet.js 的 clearLayers 方法清除所有标记节点。这修复了卸载缓慢问题。