React 18 严格模式下,Component 先挂载,卸载再重新挂载。我想在我的 React 应用程序中添加一个测试用例来测试这种行为。
我在我的应用程序中使用 karma 和 jasmine 框架。目前没找到怎么挂载。所以使用
ReactDOM.render()
act(() => {
ReactDOM.render(
<Component />, container);
});
// Act
act(() => {
ReactDOM.unmountComponentAtNode(container);
});
act(() => {
ReactDOM.render(
<Component />, container);
});
问题是,虽然它进入安装的挂钩内,但在重新安装时卸载并再次安装。但是随着
render
它再次运行并说我们有变量private a = '';
我们在已安装的钩子中设置一些值,而不是在未安装的钩子中进行清洁。
我的预期输出是当它重新安装时变量不应设置为初始值,因为我们没有清理它。但目前使用
render
它设置为空。
所以我缺少什么来获得我想要的输出
没有找到任何有用的东西,所以改变了我的方法,解决方法之一是从测试文件中调用生命周期挂钩。
const component = new Component({ prop1: {' '}});
component.componentWillUnmount();
component.componentDidMount();
虽然手动调用生命周期挂钩看起来不太好,但这个变通办法得到了我想要的输出。
如果有人知道另一种方法,请更新回复。