我第一次使用 react-table v7。我的行中有有状态的组件——本质上是每行中有一个有状态的键/值选择器(当然是在一个单元格内)。
我注意到当表的状态发生变化时,整个渲染树会卸载并重新安装 - 例如,如果我选择一行或以编程方式插入新行。这当然会导致我的有状态组件被重新安装和重新初始化。
我陷入了困境,试图解释为什么会发生这种情况。这不是非常可取或必要的,实际上为什么会发生。有人知道吗?
我第一次使用 react-table v7。我的行中有有状态的组件——本质上是每行中有一个有状态的键/值选择器(当然是在一个单元格内)。
我注意到当表的状态发生变化时,整个渲染树会卸载并重新安装 - 例如,如果我选择一行或以编程方式插入新行。这当然会导致我的有状态组件被重新安装和重新初始化。
我陷入了困境,试图解释为什么会发生这种情况。这不是非常可取或必要的,实际上为什么会发生。有人知道吗?
恐怕你是对的,调试方法是如此可疑,这实际上是问题的原因!
抛开所有的笑话不谈,问题在于DebugUnmount
每次App
调用函数体时都会重新创建组件。
这意味着因为它是一个新DebugUnmount
功能,React 将它视为一个完全不同的组件,并且会卸载旧的并重新安装新的,因为根据 React 的差异引擎,它是一个全新的子树。
这是相同的代码框,但内部组件不再在每次渲染时重新创建:
https://codesandbox.io/s/intelligent-moon-ku89t?file=/src/App.js