震惊!!!一天学会VUEX

VUEX定义:vue全局状态管理器(在任意组件/页面都可以访问vuex的数据)(当数据更新的时候,引用vuex的组件试图会自动更新)

例子:state{

                userlnfo:{name:"mumu",score:2500}

}

定义数据(state):组件中访问:$store.state.userlnfo.score

例子:geeters:{

                gold(state){return Math.floor(state.userlfo.score/100)}

        }

计算数据(getters) :组件中访问:$store. getters. gold

例子:ADD_SCORE(state, data=100){
                state. userInfo. score+=data
        }

修改数据(mutations):组件中访问:$store.commit("ADD_SCORE",200)

例子:setScore(context.data){

setTimeout(()=>{

        context.commit("ADD_SCORE",data);

},2000)

}

异步操作(Actions):组件中访问:$store.dispatch("setScore",200)

 

 模块(modules):把vuex又分成小的模块:
                                                                        

import cart from'./modules/cart. js
modules:{
   cart
}
cart. js
export default{
state:{},
getters:{},
mutations:{},
actions:{}.
namespace:true,//开启模块的命名空间
}


     组件中访问模块的state需要带模块名称(cart):

$store. state. cart. goods
组件访问getters, actions, mutations不需要带模块名:$store. getters.totalPrice
开启namespace:true命名空间的模块:
getters, mutations, actions在组件访问的时候都要带模块名 

this.$store. dispatch("cart/addCart", data) 

actions第一个参数(context):1. context相当与组件中的                                                               $store($store代表整个vuex,整个仓库)


   context. commit("mutations方法名",data)
   context. dispatch("actions中的方法名", data)
   context. state.数据名
   context. getters.数据名

  mutations第一个参数(state)   

getters第一个参数(state数据)                                                          

vue的射影方法 :就是vuex中的state与getters映射为组件的                                  data数据(只读)
                            vuex中的actions和mutations映射为组件的                                  methods方法
 

mapState:

01导入
      import {mapState, mapGetters,mapActions,mapMutations}from 'vuex'
02、在computed去计算computed:(
      //映射带模块cart
      …mapState((
            goods:state>state. cart. goods
        } ).
      //不带模块
      … mapState(["userInfo"])
        }
03、在组件使用映射出来属性
      <p>({goods}}</p>
      <p>({userInfo)}</p>
04、在computed去计算
      computed:{
          … mapGetters( ['totalPrice'])
      }

mapGetters:
     

01、在组件中使用
             <p>总价格:{(totalPricel}</p>

02、在methods方法里面扩展
                methods:{
                    … mapActions(["delCart"])
                }

mapActions:

01、在组件中调用方法
                <div @click="delCart(good. id)">
02、在methods方法里面扩展
                      methods:{
                        …mapMutations(["ADD_SCORE"])
                      }

mapMutations:

01、在组件中调用方法
                   <div@click="ADD_5CORE(500)">
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值