如何解決快應用堆疊溢位問題
現象描述
已知將透過 $element('id') 獲取到內容,賦值給成員變數,可能會引發堆疊溢位(RangeError: Maximum call stack size exceeded ),從而導致程式崩潰;同時,頁面 DOM 存在成員變數( 如 A ) 的引用,當該變數 A 發生變化時,即會引發堆疊溢位報錯問題,示例程式碼如下:
<template> <div id="content"> <input type="button" @click="onTestClick" value="會引發堆疊溢位"/> <text>{{ stateText }}</text> </div> </template> <script> export default { private: { mContentNode: null, stateText: 'init state' }, onReady() { /* 如將 $element('id')獲取到內容,賦值給成員變數,則有可能引發堆疊溢位 */ this.mContentNode = this.$element('content') }, onTestClick() { /* 頁面 DOM 存在成員變數的引用,當發生變化時,即是引發如上所述的一種必現方式 */ this.stateText = 'new state' } } </script>
這是因為賦值為 vm 屬性,會觸發大規模的資料驅動變化,導致內部出現異常迴圈,從而引發堆疊溢位報錯。
解決方法
只要不將 $element('id') 獲取到內容,賦值給成員變數,即可規避堆疊溢位問題;可以將其賦值給區域性變數,或頁面全域性變數,示例程式碼如下:
<script> let $gContentNode = null export default { private: { stateText: 'init state' }, onReady() { /* 如將 $element('id')獲取到內容,賦值給區域性變數,或頁面全域性變數,則可規避堆疊溢位問題 */ const cContentNode = this.$element('content') $gContentNode = this.$element('content') }, onTestClick() { this.stateText = 'new state' } } </script>
原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0204465500063450107?fid=0101271690375130218
原作者:Mayism
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2784229/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java解決遞迴造成的堆疊溢位問題Java遞迴
- IE11下javascript報堆疊溢位問題的解決IE11JavaScript
- StackOverflowError堆疊溢位錯誤Error
- win10黑屏了堆疊溢位怎麼辦_win10系統黑屏提示堆疊溢位解決教程Win10
- 堆疊溢位報錯引發的思考
- Javascript中遞迴造成的堆疊溢位及解決方案JavaScript遞迴
- jacksonjava轉jsonhibernate造成的堆疊溢位無限遞迴問題JavaJSON遞迴
- 如何解決快應用頁面滑動卡頓問題
- CSS解決文字溢位問題CSS
- 用word-wrap解決文字溢位的問題
- Vue專案中出現:Maximum call stack size exceeded(堆疊溢位)Vue
- 【RTOS】FreeRTOS中的任務堆疊溢位檢測機制
- N1CTF2018 shopping:多執行緒堆題中堆溢位的應用TF2執行緒
- 如何解決快取失效問題快取
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- css 盒子溢位問題CSS
- 堆溢位學習筆記筆記
- 堆溢位之OverlappingAPP
- 記憶體溢位問題記憶體溢位
- Linux kernel 堆溢位利用方法Linux
- 如何利用執行緒堆疊定位問題執行緒
- 記憶體溢位的問題記憶體溢位
- [jenkins]解決jenkins記憶體溢位問題Jenkins記憶體溢位
- 堆疊的應用——用JavaScript描述資料結構JavaScript資料結構
- 堆溢位-House of orange 學習筆記筆記
- Linux kernel 堆溢位利用方法(二)Linux
- 強如 Disruptor 也發生記憶體溢位?記憶體溢位
- 快應用稽核常見問題
- Linux堆溢位漏洞利用之unlinkLinux
- Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)RedisError記憶體溢位
- 模擬實戰排查堆記憶體溢位(java.lang.OutOfMemoryError: Java heap space)問題記憶體溢位JavaError
- 自己挖的坑自己填--jxl進行Excel下載堆記憶體溢位問題Excel記憶體溢位
- 如何解決ie瀏覽器的快取問題瀏覽器快取
- Java EasyExcel 匯出報記憶體溢位如何解決JavaExcel記憶體溢位
- HarmonyOS應用框架如何解決多裝置互動問題?框架
- web前端技術分享:多行文字溢位問題解決方案Web前端
- 谷歌安卓5.1.1即將推送:解決記憶體溢位問題谷歌安卓記憶體溢位
- HarmonyOS NEXT應用開發實戰—元件堆疊元件