vue基础---14vuex

<template>                                                        
  <div>
  123
  </div>
</template>
<script>
import {mapState,mapGetters,mapMutations,mapActions} from "vuex"
  export default{
    name:"app",
    data(){
      return{
      }
    },
    created(){
      // 获取state方法一
      // console.log(this.$store.state.list);
      // 对应写法一:
      // console.log(this.list);
      // 对应写法二:
      // console.log(this.list);
      // 对应写法三:
      // console.log(this.newList);
      // 对应获取state方法三
      console.log(this.list);




      // 获取getters方法一
      // console.log(this.$store.getters.screen);
      // 对应获取getters方法二
      // console.log(this.screen);
      // console.log(this.screens);
      // 对应获取getters方法三
      // console.log(this.screen);
      // console.log(this.screens);
      // getters传参;需要先获取getters中的方法,再进行传参
      // console.log(this.getById(123))





      // 执行mutations方法一
      // this.$store.commit('add')
      // 对应mutations方法二
      // this.add()
      // 对应mutations方法三
      // this.add1()
      // 对应mutations传参
      this.add3(10)





      // 执行actions方法一
      // this.$store.dispatch('AsyncInc')
      // 对应actions方法二
      // this.AsyncInc()
      // 对应actions传参
      this.AsyncInc(50);
    },
    computed:{
      //获取state方法二
      /*...mapState({
        // 写法一:
        // list:state=>state.list,
        // 写法二:
        // list:'list',
        // 写法三:
        // newList(state){
        //   return state.list
        // }
      })*/
      //获取state方法三
      ...mapState([
        'list'
      ]),







      // 获取getters方法二
      // ...mapGetters(['screen','screens'])
      // 获取getters方法三
      // ...mapGetters({
      //   screen:'screen',
      //   screens:'screens'
      // })
      // 对应getters传参
      ...mapGetters(['getById'])








    },
    methods:{
      // 获取mutations中方法二
      // ...mapMutations(['add'])
      // 获取mutations中方法三
      // ...mapMutations({
      //   add1:'add'
      // })
      // 对应mutations传参
      ...mapMutations(['add3']),





      // 获取actions中方法二
      // ...mapActions(['AsyncInc'])
      // }
      // actions传参
      ...mapActions(['AsyncInc'])
      }
    }
</script>
      
<style>
      
</style>
import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex)

export default new Vuex.Store({
    state:{//相当于data
        number:1,
	list:[
		{
		  id:1,
		  name:"商品一",
		  status:5,
		  boolean:false
		},
		{
		  id:2,
		  name:"商品二",
		  status:6,
		  boolean:true
		},
		{
		  id:3,
		  name:"商品三",
		  status:7,
		  boolean:false
		}
	]
    },
    getters:{//相当于计算属性
	screen(state){//过滤status值大于5的数据
		return state.list.filter(v=>{
			return v.status>5
		})
	},
	screens(state,getters){//传参getters,可以引用本身
		return getters.screen.filter(v=>{
			return v.boolean
		})
        },
        getById:(state)=>(id)=>{//传参
            console.log(state);
            console.log(id);
        }
    },
    mutations:{//唯一能改变state状态的
        add(state){
            state.number+=1
            console.log("number:"+state.number);
        },
        add3(state,n){//传参
            state.number+=n
            console.log("number:"+state.number);
		},
    },
    actions:{//异步方法
        AsyncInc(context,n){
            // context相当于this.$store.commit
            console.log(n);
            setInterval(()=>{
                context.commit('add',3)
                console.log("actions:"+context.state.number);
            },2000)
        }
    }
})

  

上一篇:Cocos Creator 组件-动作ActionScale


下一篇:.net 获取IP地址的几种方式