最近連着用 Electron + Vuex 做了兩個客戶端軟件,記錄一點新手期容易掉的坑。
問題表現 | 原因 | 解決方案 |
dispatch mutation 調用 action 方法時,不起作用調用失敗 | 用 vue-cli 構建的配置里,默認使用了 createSharedMutations 插件 | 不使用這個插件,或者去看插件的官方文檔,有詳細的解決方案 |
form 表單數據雙向綁定報錯(無法使用 v-model 綁定數據) | 在 vuex 嚴格模式下,只能通過 mutation 改變 state 里的對象數據。而 v-model 試圖直接修改 store 對象,所以報錯 | 采用 :value 來綁定數據,然后在 change 事件中提交 mutation 來動態改變數據 |
router push 跳轉組件失效 | 沒有配置路由清單 | 在 router/index.js 中配置組件的路由信息 |
設置默認全屏啟動程序失敗 | 在初始化 mainWindow 明確定義了窗口的 width、height 值 | 去掉這段設置代碼 |
未修改 state 值卻錯,報錯內容指出在 mutations 外修改了 state 值 | 在 mutation 外獲取 state 里的數據值時,直接為變量賦值目標對象,之后改變這個變量的值,發生引用修改導致報錯 | 獲取 state 里的對象時,給變量復制對象的拷貝而非對象本身 |
修改了 state 里的數據,視圖里數據卻沒有跟着變化 | 在改變對象類型的數據時,采用了直接賦值更新整個對象的方式 | 修改對象中哪個屬性就只修改那一個屬性,或者使用 Vue.set 方法 |
程序打包后安裝運行報錯或樣式丟失 | 通常是因為靜態資源如:圖片、樣式文件等沒有放到 static 目錄下 | 將這些資源移動到 static 文件下 |
視圖渲染報錯:Failed to mount component: template or render function not defined. | 配置組件屬性關鍵字錯誤 | 修該 component 為 components |
其實許多問題官網文檔里都有說明,只是作為新手遇到時不一定能想起來,也不一定知道就是那個問題。