使用vue開發(fā)中碰到的問題系列

  • 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打包路徑配置的不對删豺,修改即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末共虑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呀页,更是在濱河造成了極大的恐慌妈拌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓬蝶,死亡現(xiàn)場離奇詭異尘分,居然都是意外死亡,警方通過查閱死者的電腦和手機丸氛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門培愁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雪位,你說我怎么就攤上這事竭钝。” “怎么了雹洗?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵香罐,是天一觀的道長。 經(jīng)常有香客問我时肿,道長庇茫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任螃成,我火速辦了婚禮旦签,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寸宏。我一直安慰自己宁炫,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布氮凝。 她就那樣靜靜地躺著羔巢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罩阵。 梳的紋絲不亂的頭發(fā)上竿秆,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音稿壁,去河邊找鬼幽钢。 笑死,一個胖子當著我的面吹牛傅是,可吹牛的內(nèi)容都是我干的匪燕。 我是一名探鬼主播蕾羊,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谎懦!你這毒婦竟也來了肚豺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤界拦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梗劫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體享甸,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年梳侨,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛉威。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡走哺,死狀恐怖蚯嫌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丙躏,我是刑警寧澤择示,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晒旅,受9級特大地震影響栅盲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜废恋,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一谈秫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鱼鼓,春花似錦拟烫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岸梨,卻和暖如春喜颁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曹阔。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工半开, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赃份。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓寂拆,卻偏偏與公主長得像奢米,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纠永,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容