亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vuex報this.$store.commit is not a function錯誤怎么辦

發布時間:2021-07-12 12:24:39 來源:億速云 閱讀:1192 作者:小新 欄目:web開發

這篇文章主要為大家展示了“vuex報this.$store.commit is not a function錯誤怎么辦”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“vuex報this.$store.commit is not a function錯誤怎么辦”這篇文章吧。

Vue的項目中,如果項目簡單, 父子組件之間的數據傳遞可以使用 props 或者 $emit 等方式 進行傳遞

但是如果是大中型項目中,很多時候都需要在不相關的平行組件之間傳遞數據,并且很多數據需要多個組件循環使用。這時候再使用上面的方法會讓項目代碼變得冗長,并且不利于組件的復用,提高了耦合度。

Vue 的狀態管理工具 Vuex 完美的解決了這個問題。

看了下vuex的官網,覺得不是很好理解,有的時候我們只是需要動態的從一個組件中獲取數據(官網稱為“組件層級”:是個獨立的控件,作用范圍只在組件之內)然后想放到一個被官網稱作“應用層級”(在項目的任意地方都可以隨時獲取和動態的修改,在修改之后,vue會為你的整個項目做更新)的地方。這是我最初來學習vue的原因,我并不想做一個前端數據結構庫。。。

下面看看我一步一步的小例子

首先安裝vuex 目前公司項目已經被我從vue1.0遷移到vue2.0,下載并安裝vue

npm install vuex --save

然后在index.html同級新建文件夾store,在文件夾內新建index.js文件,這個文件我們用來組裝模塊并導出 store 的文件

【一、獲取store中的數據】

import Vue from 'vue'
import Vuex from 'vuex'

// 告訴 vue “使用” vuex
Vue.use(Vuex)

// 創建一個對象來保存應用啟動時的初始狀態
// 需要維護的狀態
const store = new Vuex.Store({
 state: {
  // 放置初始狀態 app啟動的時候的全局的初始值
  bankInf: {"name":"我是vuex的第一個數據","id":100,"bankName":"中國銀行"}
 }
})
// 整合初始狀態和變更函數,我們就得到了我們所需的 store
// 至此,這個 store 就可以連接到我們的應用中
export default store

在vue根文件中注冊store,這樣所有的組件都可以使用store中的數據了

我的項目文件結構:

vuex報this.$store.commit is not a function錯誤怎么辦

在main.js文件中注冊store

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './../store/index'

/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store,
 template: '<App/>',
 components: { App }
})

這樣簡單的第一步就完成了,你可以再任意組件中使用store中的數據,使用方法也很簡單,就是使用計算屬性返回store中的數據到一個新屬性上,然后在你模板中則可以使用這個屬性值了:

任意組件中:

export default {
 ...
 computed: {
  bankName() {
   return this.$store.state.bankInf.bankName;
  }
 },
 ...
}

在模板中可以直接使用bankName這個屬性了,也就是store中的中國銀行

【二、在組件中修改store中的狀態 】

在任意組件中添加html模板

<div class="bank">
  <list-header :headerData="bankName"></list-header>
  04銀行詳情頁面
  <input name="" v-model="textValue">
  <button type="button" name="獲取數據" @click="newBankName"></button>
</div>

然后組件中提交mutation

export default {
 ...
 computed: {
  bankName() {
   return this.$store.state.bankInf.bankName;
  }
 },
 methods: {
  newBankName: function() {
   this.$store.commit('newBankName', this.textValue)
  }
 }
 ...  
}

在store中的index.js中添加mutations:

const store = new Vuex.Store({
 state: {
  // 放置初始狀態 app啟動的時候的全局的初始值
  bankInf: {"name":"我是vuex的第一個數據","id":100,"bankName":"中國銀行"},
  count:0
 },
 mutations: {
  newBankName(state,msg) {
   state.bankInf.bankName = msg;
  }
 }
})

這樣你發現,在點擊提交按鈕的時候,頁面已經顯示你修改的數據了,并且所有復用這個組件的地方的數據全都被vue更新了;

如果在使用中發現報錯this.$store.commit is not a function ,請打開你項目的配置文件package.json,查看你正在使用的vuex的版本,我正在使用的是vuex2.0,

如果想刪除舊版本的vuex并安裝新版本的vuex請使用

npm rm vuex --save

然后安裝最新的vuex

npm install vuex --save

即可解決這個錯誤,或者是查看vuex官網api修改提交mutation的語句

以上是“vuex報this.$store.commit is not a function錯誤怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

密云县| 永善县| 清流县| 桑日县| 民乐县| 宝坻区| 大荔县| 桂平市| 铜川市| 上林县| 太湖县| 涿鹿县| 云阳县| 肇源县| 马尔康县| 清新县| 健康| 新兴县| 神木县| 安图县| 河源市| 汕尾市| 韩城市| 土默特左旗| 彭州市| 江口县| 甘谷县| 库车县| 兴城市| 磴口县| 黑龙江省| 武平县| 南皮县| 石家庄市| 伊川县| 彭泽县| 宝山区| 兰州市| 隆昌县| 依安县| 巴南区|