下面根据链接反应的代码说:
不幸的是,这可能会导致服务器渲染的内存泄漏(永远不会调用 componentWillUnmount)
// Before
class ExampleComponent extends React.Component {
componentWillMount() {
this.setState({
subscribedValue: this.props.dataSource.value,
});
// This is not safe; it can leak!
this.props.dataSource.subscribe(
this.handleSubscriptionChange
);
}
componentWillUnmount() {
this.props.dataSource.unsubscribe(
this.handleSubscriptionChange
);
}
handleSubscriptionChange = dataSource => {
this.setState({
subscribedValue: dataSource.value,
});
};
}
我不明白这怎么可能是服务器端的内存泄漏。例如,假设我们有这个在服务器端呈现的代码,并且 ExampleComponent 包含内存泄漏。
import React from 'react';
import ReactDomServer from 'react-dom/server';
import App from './components/index'
const serverRender = () =>{
return ReactDomServer.renderToString(<ExampleComponent />);
};
export default serverRender;
当这返回到客户端时,渲染的组件不会附加到任何地方并准备好被 GB 收集。那么为什么会出现内存泄漏呢?