其他分享
首页 > 其他分享> > Vuex 全部问题和使用使用

Vuex 全部问题和使用使用

作者:互联网

1.有关 Vuex 方面的问题和方法有一下内容

1.Vuex 的概念

2.Vuex 五大核心概念

3.Vuex 的安装

命令:

cnpm install vuex --save

4.vuex 的使用场景

5.vuex 的使用

  1. state 用来存储共享数据的
  2. export default new Vuex.Store({
      state: {  
         //存储共享数据的
         msg:"张波跟了我7给月了",
         num:15,
         isshow:true
      },
      mutations: {
        
      },
      actions: {
      },
      getters:{
     
      }
    })
  3. 组件中使用state中的数据
  4. {{$store.state.msg}}
    
    //js    this.$store.state.xx
  5. mutations :只有mutations才能更改state中的数据
  6. export default new Vuex.Store({
      state: {  
         //存储共享数据的
         msg:"张波跟了我7给月了",
         num:15,
         isshow:true
      },
      mutations: {   //只有mutations才能更改state中的数据
          plusOne(state){
             //state是用来读取state中的数据
             state.num++
          }
      },
      actions: {
      },
      getters:{
     
      }
    })
  7. 带参数修改数据
  8. export default new Vuex.Store({
      state: { 
         //存储共享数据的
         msg:"张波跟了我7给月了",
         num:15,
         isshow:true
      },
      mutations: {   //只有mutations才能更改state中的数据
          plusN(state,n){
            //state是用来读取state中的数据
            state.num=state.num+n   //state.num+=n
         }
      },
      actions: {
      },
      getters:{
     
      }
    })

  9. 组件中使用

    <button @click="$store.commit('plusN',10)">+N</button>

    注意:调用mutations只能传递一个参数,如果要传递多个参数需要使用到对象

6.Vuex  的运行机制

7.vuex 的数据持久化

         Vuex 页面刷新数据丢失怎么解决?

8.vuex 的简介方法 --- 映射

         映射方法可以让我们使用 Vuex 的方法是更加简洁会减少大量的代码

  1. mutations 和 actions 需要映射到 methods 里,
  2. 而 state 和 getters 则需要映射到 computed 里
export default new Vuex.Store({
  state: {
    str: "我是映射过去的 state 方法"
  },
  mutations: {
    fun1(){
      console.log("我是映射过去的 mutations 方法")
    }
  },
  actions: {
    fun2() {
      console.log("我是映射过去的 actions 方法")
    }
  },
  getters: {
    haha() {
      return "我是映射过去的 getters 方法"
    }
  },
  modules: {}
})

调用

<template>
  <div id="app">
      {{str}} -------- {{haha}} 
      <br>
      <button @click="fun1">mutations</button>
      <button @click="fun2">actions</button>
  </div>
</template>

<script>
//	引入各种映射方法
import {mapState,mapMutations,mapActions,mapGetters} from "vuex"
export default {
  name: "App",
  methods: {
  	//	用扩展用算符把需要的方法用下面的语法扩展出来
    ...mapMutations(["fun1"]),
    ...mapActions(["fun2"])
  },
  computed:{
 	//	用扩展用算符把需要的方法用下面的语法扩展出来
    ...mapState(["str"]),
    ...mapGetters(["haha"])
  }
};
</script>

映射方法传参

export default new Vuex.Store({
  state: {
    str: "我是映射过去的 state 方法"
  },
  mutations: {
    fun1(state,can){
      console.log("我是映射过去的 actions 方法")
      console.log(can)
    }
  },
  actions: {
    fun2(state,can) {
      console.log("我是映射过去的 actions 方法")
      console.log(can)
    }
  },
  getters: {
    haha() {
      return "我是映射过去的 getters 方法"
    }
  },
  modules: {}
})

调用

<template>
  <div id="app">
      <button @click="fun1('mutations')">mutations</button>
      <button @click="fun2('actions')">actions</button>
  </div>
</template>

<script>
import {mapState,mapMutations,mapActions,mapGetters} from "vuex"
export default {
  name: "App",
  methods: {
  	//	映射方法传参需要写成对象格式才可传参
    ...mapMutations({
      fun1:"fun1",
    }),
    ...mapActions({
      fun2:"fun2"
    })
  }
};
</script>

9.还有 vuex 的模块化

// 导入vue和vuex
import Vue from 'vue'
import Vuex from 'vuex'

// 将vuex安装为Vue得插件
Vue.use(Vuex)	
// 创建store得实例对象
const store =new Vuex.Store({
  state:{}
})

// 导出store得实例对象
export default store

//1 导入store得实例对象
import store from './store/store.js'

const app = new Vue({
    ...App,
    // 将store挂载到vue实例上
    store
})
export default {
  // 为当前模块开启命名空间
    namespaced:true,
    state:{
      carts:[],
    },
    mutations:{
      setname(state){
        
      }
    },
    getters:{
      
    }
}
// 1导入购物车得vuex模块
import cartmodule from './cart.js'
import loginmodule from './login.js'
// 将vuex安装为Vue得插件
Vue.use(Vuex)
// 创建store得实例对象
const store =new Vuex.Store({
  modules:{
    // 2挂载购物车得vuex模块  模块内得成员访问路径调整为 m_cart
    // 读取购物车模块中得state得数据  m_cart/carts
    cart:cartmodule,
    login:loginmodule
  }
})
<template>
  <view>
    <view v-for="(item,index) in carts"  :key="">
      {{item}}
    </view>
  </view>
</template>

<script>
  import {mapState} from 'vuex'
  export default {
    data() {
      return {
        
      };
    },
    computed:{
      // ...mapState('模块得名称',['要映射得数据名称'])
      ...mapState('m_cart',['carts'])
    }
  }
</script>

标签:Vuex,state,actions,mutations,全部,使用,vuex,store
来源: https://blog.csdn.net/weixin_61334593/article/details/121419452