我正在處理將React組件合併到非反應環境中的項目。刪除已安裝組件的DOM元素
該項目採用骨幹,我們正在慢慢地遷移網站的某些部分反應。
我的問題:
刪除DOM節點(通過backbone/jquery)是否釋放與React組件關聯的內存?
該文檔清楚地說明,你必須管理你自己的安裝/未安裝,但是我想知道,如果簡單地移除DOM將清理內存對我來說,還是需要擔心內存泄漏的長壽命頁?
一個例子是用例離開頁面(使用我們的骨幹路由器)和重新渲染頁面,這會刪除所有以前的節點,並建立新的HTML - 這樣會發生什麼情況都安裝反應的組分?
編輯:
要清楚,我沒有用jQuery修改渲染的組件。
class App extends React.Component{
render(){
return (<div>Amazing</div>);
}
}
//extreme use case, render a component, remove the DOM node, create a new DOM node
setInterval(function(){
ReactDOM.render(React.createElement(App),document.getElementById('app'));
$('#app').remove();
$('body').append($('<div id="app">'));
},250)
編輯: 調查該問題後,您必須使用MutationObserver檢測出刪除節點和卸載它們,如果你不這樣做的節點將繼續在內存中呈現。 我這裏寫了一個完整的描述:
https://medium.com/@patrick.tolosa/backbone-router-with-react-components-13791727a351
日誌componentWillUnmount和有我登錄它的答案 – lustoykov
,它沒有運行:)但我的問題是關於內存分配,而不僅僅是生命週期方法 – Patrick