最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

 更新時(shí)間:2023年06月27日 10:40:59   作者:蝸牛楊哥  
這篇文章主要介紹了vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

 this.$store.dispatch() 與 this.$store.commit()方法的區(qū)別總的來說他們只是存取方式的不同,兩個(gè)方法都是傳值給vuex的mutation改變state

  • this.$store.dispatch():含有異步操作,例如向后臺(tái)提交數(shù)據(jù),寫法:this.$store.dispatch(‘action方法名’,值)
  • this.$store.commit():同步操作,,寫法:this.$store.commit(‘mutations方法名’,值)

commit: 同步操作

存儲(chǔ) this.$store.commit('changeValue',name)

取值 this.$store.state.changeValue

dispatch: 異步操作

存儲(chǔ) this.$store.dispatch('getlists',name)

取值 this.$store.getters.getlists

案例:

Vuex文件 src/store/index.js

import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
export const store = new Vuex.Store({
  // state 共享的狀態(tài)值
  state: {
    // 保存登錄狀態(tài)
    login: false
  },
  // mutations: 專門書寫方法,用來更新 state 中的值
  mutations: {
    // 登錄方法
    doLogin(state) {
      state.login = true;
    },
    // 退出方法
    doLogout(state) {
      state.login = false;
    }
  }
});

組件JS部分 : src/components/Header.vue

<script>
// 使用vux的 mapState需要引入
import { mapState } from "vuex";
export default {
  // 官方推薦: 給組件起個(gè)名字, 便于報(bào)錯(cuò)時(shí)的提示
  name: "Header",
  // 引入vuex 的 store 中的state值, 必須在計(jì)算屬性中書寫!
  computed: {
    // mapState輔助函數(shù), 可以快速引入store中的值
    // 此處的login代表,  store文件中的 state 中的 login, 登錄狀態(tài)
    ...mapState(["login"])
  },
  methods: {
    logout() {
      this.$store.commit("doLogout");
    }
  }
};
</script>

組件JS部分 : src/components/Login.vue

<script>
export default {
  name: "Login",
  data() {
    return {
      uname: "",
      upwd: ""
    };
  },
  methods: {
    doLogin() {
      console.log(this.uname, this.upwd);
      let data={
        uname:this.uname,
        upwd:this.upwd
      }
       this.axios
        .post("user_login.php", data)
        .then(res => {
          console.log(res);
          let code = res.data.code;
          if (code == 1) {
            alert("恭喜您, 登錄成功! 即將跳轉(zhuǎn)到首頁");
            // 路由跳轉(zhuǎn)指定頁面
            this.$router.push({ path: "/" });
            //更新 vuex 的 state的值, 必須通過 mutations 提供的方法才可以
            // 通過 commit('方法名') 就可以出發(fā) mutations 中的指定方法
            this.$store.commit("doLogin");
          } else {
            alert("很遺憾, 登陸失敗!");
          }
        })
        .catch(err => {
          console.error(err);
        });
    }
  }
};
</script>

兩個(gè)方法其實(shí)很相似,關(guān)鍵在于一個(gè)是同步,一個(gè)是異步

commit: 同步操作

this.$store.commit('方法名',值) //存儲(chǔ)
this.$store.state.'方法名' //取值

dispatch: 異步操作

this.$store.dispatch('方法名',值) //存儲(chǔ)
this.$store.getters.'方法名' //取值

當(dāng)操作行為中含有異步操作,比如向后臺(tái)發(fā)送請(qǐng)求獲取數(shù)據(jù),就需要使用action的dispatch去完成了,其他使用commit即可.

其他了解:

  • commit => mutations, 用來觸發(fā)同步操作的方法.
  • dispatch => actions, 用來觸發(fā)異步操作的方法.

在store中注冊(cè)了mutation和action

在組件中用dispatch調(diào)用action,用commit調(diào)用mutation 

vue中Error in mounted hook: “TypeError: this.$store.$dispatch is not a function“ 報(bào)錯(cuò)

這個(gè)錯(cuò)誤屬于語法錯(cuò)誤,初學(xué)者經(jīng)常犯的錯(cuò)誤。

解決方法

將$dispatch改為dispatch

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中各組件之間傳遞數(shù)據(jù)的方法示例

    vue中各組件之間傳遞數(shù)據(jù)的方法示例

    Vue 的組件作用域都是孤立的,不允許在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。必須使用特定的方法才能實(shí)現(xiàn)組件之間的數(shù)據(jù)傳遞。下面這篇文章主要給大家介紹了關(guān)于vue中各組件之間傳遞數(shù)據(jù)的方法示例,需要的朋友可以參考學(xué)習(xí)。
    2017-07-07
  • Vue下拉框加分頁搜索功能的實(shí)現(xiàn)方法

    Vue下拉框加分頁搜索功能的實(shí)現(xiàn)方法

    開發(fā)任務(wù)中有這樣一個(gè)需求,下拉框中需要展示超過5000條數(shù)據(jù),甚至更多,這數(shù)據(jù)量直接整個(gè)頁面卡死了,就想到在下拉框中加分頁,下面小編通過實(shí)例代碼介紹下Vue下拉框加分頁搜索功能的實(shí)現(xiàn),感興趣的朋友一起看看吧
    2022-11-11
  • Vue-Access-Control 前端用戶權(quán)限控制解決方案

    Vue-Access-Control 前端用戶權(quán)限控制解決方案

    Vue-Access-Control是一套基于Vue/Vue-Router/axios 實(shí)現(xiàn)的前端用戶權(quán)限控制解決方案。這篇文章主要介紹了Vue-Access-Control:前端用戶權(quán)限控制解決方案,需要的朋友可以參考下
    2017-12-12
  • vue axios請(qǐng)求攔截實(shí)例代碼

    vue axios請(qǐng)求攔截實(shí)例代碼

    axios 是一個(gè)基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端.這篇文章主要介紹了vue/axios請(qǐng)求攔截的相關(guān)知識(shí),需要的朋友可以參考下
    2018-03-03
  • 深入淺析vue組件間事件傳遞

    深入淺析vue組件間事件傳遞

    最近的工作需要用到vue,所以最近接觸最多的就是vue,下面小編給大家介紹下vue組件間事件傳遞,需要的朋友參考下吧
    2017-12-12
  • Vue + Node.js + MongoDB圖片上傳組件實(shí)現(xiàn)圖片預(yù)覽和刪除功能詳解

    Vue + Node.js + MongoDB圖片上傳組件實(shí)現(xiàn)圖片預(yù)覽和刪除功能詳解

    這篇文章主要介紹了Vue + Node.js + MongoDB圖片上傳組件實(shí)現(xiàn)圖片預(yù)覽和刪除功能,結(jié)合實(shí)例形式詳細(xì)分析了Vue + Node.js + MongoDB基于圖片上傳組件實(shí)現(xiàn)圖片預(yù)覽和刪除功能相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • vue基于html2canvas和jspdf?生成pdf?、解決jspdf中文亂碼問題的方法詳解

    vue基于html2canvas和jspdf?生成pdf?、解決jspdf中文亂碼問題的方法詳解

    這篇文章主要介紹了vue基于html2canvas和jspdf?生成pdf?、解決jspdf中文亂碼問題的方法,結(jié)合實(shí)例形式詳細(xì)描述了中文亂碼問題的原因、解決方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2023-06-06
  • Vue在啟動(dòng)時(shí)卡住了,啟動(dòng)不了的問題及解決

    Vue在啟動(dòng)時(shí)卡住了,啟動(dòng)不了的問題及解決

    這篇文章主要介紹了Vue在啟動(dòng)時(shí)卡住了,啟動(dòng)不了的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue項(xiàng)目打包解決靜態(tài)資源無法加載和路由加載無效(404)問題

    vue項(xiàng)目打包解決靜態(tài)資源無法加載和路由加載無效(404)問題

    這篇文章主要介紹了vue項(xiàng)目打包,解決靜態(tài)資源無法加載和路由加載無效(404)問題,靜態(tài)資源無法使用,那就說明項(xiàng)目打包后,圖片和其他靜態(tài)資源文件相對(duì)路徑不對(duì),本文給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-10-10
  • el-input無法輸入的問題和表單驗(yàn)證失敗問題解決

    el-input無法輸入的問題和表單驗(yàn)證失敗問題解決

    在做項(xiàng)目的時(shí)候發(fā)現(xiàn)一個(gè)情況,輸入框無法輸入值并且表單校驗(yàn)失靈,所以下面這篇文章主要給大家介紹了關(guān)于el-input無法輸入的問題和表單驗(yàn)證失敗問題解決的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

衡南县| 舒城县| 靖远县| 玛纳斯县| 东平县| 肇东市| 缙云县| 老河口市| 沙洋县| 台南市| 永吉县| 买车| 文水县| 阜新| 温州市| 溧水县| 图们市| 凤台县| 平泉县| 凤冈县| 准格尔旗| 布拖县| 舒城县| 临高县| 武鸣县| 保靖县| 宝鸡市| 白山市| 新郑市| 泰顺县| 西峡县| 平乐县| 永平县| 柘荣县| 曲阜市| 阜平县| 汤原县| 宁乡县| 鞍山市| 云和县| 宜春市|