vue項目中遇到(Maximum call stack size exceeded)錯誤的處理

發現問題:
近期公司要求用vue組件化開發一個管理後臺,項目中用到了天地圖的繪製功能,這部分產出了許多對象實例,單個組件往裏面導入大量數據的時候(部分對象存在上萬個數據),發生了內存溢出的錯誤。
分析問題:
從報錯信息可以看出是地圖相關數據造成的,而根據需求這部分數據在當前組件中是不需要展示的,而我寫的代碼是把這些數據存在了data中,衆所周知vue的響應式處理會產生大量的setter和getter,主要是講視圖需要的數據和地圖數據糅合在了一起,因此想把地圖的數據單獨設置成非響應式的。
解決問題
由於vue的響應式處理都是通過Object.defineProperty()處理的,於是從這方面入手,將地圖的數據設置成configurable設置成false。再次導入發現問題解決啦。事實上與渲染無關的數據都儘量不要寫在data裏面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章