Vuex Actions的一次異步請求


Actions

image-20201205145300032

根據流程圖得知,actions是接受后端api的,進行異步請求,獲取到的數據 要通過commit提交給mutation,mutation才能修改state中的數據,

案例: 請求賣座的api 通過action

1,首先先判斷頁面是否擁有數據,沒有的話,使用action進行異步請求

if(this.$store.state.cinemaList.length === 0 ){
      //vuex 異步
      this.$store.dispatch('getCinemaList',this.$store.state.cityId)

dispatch是流程圖中,組件內提交給action的方法

括號傳,定義的方法,和需要傳的值

2.在store文件中

actions: {
    getCinemaList(store,cityId){
      return http({
        url: `https://m.maizuo.com/gatewaycityId=${cityId}&ticketFlag=1&k=7668767`,
        headers: {
          "X-Host": "mall.film-ticket.cinema.list",
        },
      })

return:是因為是promise對象

括號,一個是store自身的形參,傳的值

3,

 //異步
  actions: {
    getCinemaList(store,cityId){
      return http({
        url: `https://m.maizuo.com/gateway?cityId=${cityId}&ticketFlag=1&k=7668767`,
        headers: {
          "X-Host": "mall.film-ticket.cinema.list",
        },
      }).then((res) => {
        // console.log(res.data);
        store.commit('setCinemaList',res.data.data.cinemas)
      });
    }
  },

根據流程圖,將請求的數據給mutation,通過commit方法

4,在mutation中,修改state中cinema的數據

 setCinemaList(stata,cinemaList){
      stata.cinemaList = cinemaList
    }

這樣就完成了一次Vuex的異步操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM