1癞松、
RangeError: Maximum call stack size exceeded
一般vue-router報錯說明是路由配置出問題了,或者跳轉(zhuǎn)調(diào)用路由的時候出現(xiàn)死循環(huán)入蛆,RangeError: Maximum call stack size exceeded
是死循環(huán)出現(xiàn)的語句响蓉,這種情況先檢查組件中是否有重名調(diào)用,如果有應重新考慮組件命名哨毁。-
2枫甲、
Computed property "XXX" was assigned to but it has no setter
造成這種問題的根源在于XXX
屬性在vue表單中,使用v-model
進行雙向綁定且需要在computed
中進行計算更新時扼褪,需要保證XXX
屬性具有setter
方法才能計算想幻。
下面以我的store
作為示例:- 方案1(vue官方推薦)
// store.js const app = { state: { praiseCheckStatus: false, }, mutations: { SETPRAISECHECKSTATUS(state, data) { state.praiseCheckStatus = data; }, }, actions: { setPraiseCheckStatus({commit}, data) { commit('SETPRAISECHECKSTATUS', data); }, }, }; export default app;
computed: { praiseCheckStatus: { get () { return this.$store.state.app.praiseCheckStatus; }, set (newValue) { this.$store.dispatch('setPraiseCheckStatus', newValue); } } }
- 方案2
// store.js const app = { state: { praiseCheckStatus: { checked: false }, }, mutations: { SETPRAISECHECKSTATUS(state, data) { state.praiseCheckStatus.checked = data; }, }, actions: { setPraiseCheckStatus({commit}, data) { commit('SETPRAISECHECKSTATUS', data); }, }, }; export default app;
computed: { ...mapState({ praiseChecked: state => state.app.praiseCheckStatus }) }, methods: { praiseCheckboxChange(e) { this.$store.dispatch('setPraiseCheckStatus', e.target.checked); }, }
這樣需要在表單中
v-model="praiseChecked.cheked"
即可,其實是利用Object對象自帶get话浇、set方法脏毯,所以沒有直接對計算屬性進行計算,而是對該計算屬性對象的某個屬性值進行賦值幔崖。還有另外的錯誤情況食店,比如:
computed: { ...mapState({ list: state => state.app.list }), }, methods: { delete() { ....... // 執(zhí)行過程 this.$store.dispatch('setPostCommentList', this.list); } }
由于
computed
計算結(jié)果屬性會映射到當前vue
組件的data
數(shù)據(jù)源中,所以我們可以直接this.list
來使用這個計算后的屬性岖瑰,但上面這種情況是我們把this.list
處理改變了this.list
原有數(shù)據(jù)后直接塞回store
中的行為會報這個錯誤叛买,因為vuex的stroe中的數(shù)據(jù)是只讀的,想要改變store
中的數(shù)據(jù)需要通過dispatch或commit
來觸發(fā)改變蹋订,所以不能在組件中直接操作store
中的數(shù)據(jù)并重新dispatch或commit
率挣,需要用一個新的數(shù)據(jù)副本來進行dispatch或commit
- 解決方案:
methods: { delete() { ....... // 執(zhí)行過程 // 執(zhí)行刪除偽代碼,這里的刪除依然不能改變this.list的原有數(shù)據(jù)結(jié)構(gòu) // newList是一個全新的數(shù)組 const newList = this.list.delete(); this.$store.dispatch('setPostCommentList', newList); } }
3露戒、
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "XXX"
造成這個問題的原因是vue中不允許直接操作通過props
傳過來的數(shù)據(jù)椒功。
解決辦法很簡單,在data
中創(chuàng)建一個副本YYY
變量智什,初始值為props
屬性XXX
的值动漾,同時在組件內(nèi)所有需要調(diào)用props
的地方調(diào)用這個data
對象YYY
,副本變量發(fā)生變化后荠锭,通過this.$emit()
方法告訴父組件XXX
需要發(fā)生變化旱眯,父組件中將數(shù)據(jù)處理后再通過props
重新傳遞給子組件。4、
Refused to apply style from 'xxx.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
原因:webpack打包路徑配置的不對删豺,修改即可
使用vue開發(fā)中碰到的問題系列
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門培愁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雪位,你說我怎么就攤上這事竭钝。” “怎么了雹洗?”我有些...
- 文/不壞的土叔 我叫張陵香罐,是天一觀的道長。 經(jīng)常有香客問我时肿,道長庇茫,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任螃成,我火速辦了婚禮旦签,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寸宏。我一直安慰自己宁炫,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布氮凝。 她就那樣靜靜地躺著羔巢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罩阵。 梳的紋絲不亂的頭發(fā)上竿秆,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谎懦!你這毒婦竟也來了肚豺?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布,位于F島的核電站晒旅,受9級特大地震影響栅盲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜废恋,卻給世界環(huán)境...
- 文/蒙蒙 一谈秫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鱼鼓,春花似錦拟烫、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岸梨,卻和暖如春喜颁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曹阔。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Vuex是什么鬓长? Vuex 是一個專為 Vue.js應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件...
- Vue.js特性:漸進式技術(shù)棧 輕量級的框架 雙向數(shù)據(jù)綁定 指令 插件化 Vue實例書寫模板: 訪問Vue實例的屬...
- 毛姆爵士和費迪曼教授推薦的國外經(jīng)典名著:“讀過的和沒讀過的啤覆,很想讀的和不太想讀的” @笑獨行[文] 就像我們會錯過...