<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vuex 解決報錯this.$store.commit is not a function的方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:02:25
        文檔

        vuex 解決報錯this.$store.commit is not a function的方法

        vuex 解決報錯this.$store.commit is not a function的方法:Vue的項目中,如果項目簡單, 父子組件之間的數據傳遞可以使用 props 或者 $emit 等方式 進行傳遞 但是如果是大中型項目中,很多時候都需要在不相關的平行組件之間傳遞數據,并且很多數據需要多個組件循環使用。這時候再使用上面的方法會讓項目代碼變得冗長,
        推薦度:
        導讀vuex 解決報錯this.$store.commit is not a function的方法:Vue的項目中,如果項目簡單, 父子組件之間的數據傳遞可以使用 props 或者 $emit 等方式 進行傳遞 但是如果是大中型項目中,很多時候都需要在不相關的平行組件之間傳遞數據,并且很多數據需要多個組件循環使用。這時候再使用上面的方法會讓項目代碼變得冗長,

        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中的數據了

        我的項目文件結構:

        在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的語句

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vuex 解決報錯this.$store.commit is not a function的方法

        vuex 解決報錯this.$store.commit is not a function的方法:Vue的項目中,如果項目簡單, 父子組件之間的數據傳遞可以使用 props 或者 $emit 等方式 進行傳遞 但是如果是大中型項目中,很多時候都需要在不相關的平行組件之間傳遞數據,并且很多數據需要多個組件循環使用。這時候再使用上面的方法會讓項目代碼變得冗長,
        推薦度:
        標簽: not is function
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲w码欧洲s码免费| 亚洲乱码一二三四区乱码| 国产福利免费视频| 亚洲男人天堂2020| 一级毛片视频免费观看| 久久精品夜色噜噜亚洲A∨| 国产免费区在线观看十分钟| 亚洲日韩小电影在线观看| 光棍天堂免费手机观看在线观看 | 国产片免费福利片永久| 亚洲av无码专区在线观看亚| 日产乱码一卡二卡三免费| 国产精品亚洲综合| 亚洲尤码不卡AV麻豆| 无人在线观看免费高清| 亚洲图片校园春色| 色吊丝最新永久免费观看网站| 亚洲国产精品成人综合色在线| 亚洲免费一区二区| 无码少妇精品一区二区免费动态| 久久精品亚洲一区二区三区浴池 | 98精品全国免费观看视频| 亚洲综合激情六月婷婷在线观看| 2021免费日韩视频网| 久久无码av亚洲精品色午夜| 亚洲男人的天堂在线va拉文| 无码人妻久久一区二区三区免费 | 免费很黄无遮挡的视频毛片| 亚洲精品午夜无码专区| 91精品视频在线免费观看| 亚洲乱码无人区卡1卡2卡3| 亚洲午夜日韩高清一区| 最近2019免费中文字幕6| 久久精品熟女亚洲av麻豆| 久久精品国产亚洲综合色| 欧美a级在线现免费观看| 一级毛片免费不卡直观看| 亚洲高清在线mv| 亚洲成av人在片观看| 最近中文字幕大全免费视频| 亚洲AV无码AV男人的天堂不卡|