VUE3 VUEX使用方法和原理

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网
模块化路径 store/modules/user.js
  1. const ModuleUser = {
  2. namespaced: true,//开启命名空间
  3. state: {
  4. id: "默认ID",
  5. username: "默认名字",
  6. photo: "默认头像",
  7. },
  8. getters: {
  9. },
  10. mutations: {
  11. updateUser(state,user){
  12. console.log(user)
  13. state.id = user.id;
  14. state.username = user.username;
  15. },
  16. },
  17. actions: {
  18. },
  19. modules: {
  20. }
  21. };
  22. export default ModuleUser;
VUEX store/index.js
  1. import {createStore} from 'vuex'
  2. import user from './modules/user'
  3. export default createStore{
  4. // 1.存储所有全局数据,可以把state理解为data,声明变量;mutations理解为method,声明方法
  5. state:{// 状态管理
  6. isLogin:true,
  7. num:2,
  8. num2:3
  9. },
  10. // 2.需要通过计算获取state里的内容获取的数据,只能读取不可修改
  11. getter:{
  12. tols:(state) => state.num+state.num2
  13. },
  14. // 3.定义对state的各种操作
  15. // why不直接实现在mutation里需要写到action里?
  16. // mtations不能执行异步操作。aq:从云端获取信息-->(等待云端反馈)更新到state异步操作
  17. // 因此说:对于异步操作需要放到action里,简单的直接赋值操作可以直接放到mutation里
  18. mutations:{// 模板通过commit提交修改state里面的数据
  19. sub(state,content){//第1是state状态状态数据,第2是commit提交收到的数据
  20. state.num=content+1
  21. }
  22. },
  23. // 4、定义对state的各种操作
  24. // actions无法直接修改state,需要在mutations里更新
  25. // mutation不支持异步,所以需要在action里写api到url
  26. actions:{// Actions异步处理操作
  27. updatenum({commit},content) {
  28. commit('sub', content)
  29. }
  30. },
  31. modules:{// 模块划分,内容太多不会显得很臃肿。
  32. user
  33. }
  34. }
VUE单文件
  1. <template>
  2. <!-- 模板中直接使用状态 -->
  3. <div>{{$store.state.num}}</div>
  4. <button @click="$store.state.num++">{{ $store.state.num }}</button>
  5. <button @click="add()">add</button>
  6. <h3>使用 getter 中的计算属性购物车的总价:{{$store.getters.tols}}</h3>
  7. </template>
  8. <script setup>
  9. import { useStore } from 'vuex'//引入vuex
  10. const store = useStore()
  11. function add(){
  12. //选项式写法
  13. //this.$store.commit('sub',555)//提交vuex的mutation里面的sub方法,第二个参数提交的数据。
  14. //this.$store.dispatch('demo', {count:88, name:'vuex'});//提交vuex的actions里面的sub方法,第二个参数提交的数据。
  15. //组合式api,setup语法糖写法
  16. /************* 不开启命名空间 *************/
  17. //mutations 方法调用
  18. store.commit('sub','参数')
  19. store.commit('user/sum', num) // 参数带上模块名称
  20. //actions 方法调用
  21. store.dispatch('方法名'','参数')
  22. store.dispatch('updatenum',99)
  23. store.commit('updateUser',{id:10,username:'张工'})//调用模块的方法
  24. store.state.user.username//调用模块的状态
  25. //getters 计算方法只读调用
  26. store.getters.tols.
  27. /************* 开启命名空间 *************/
  28. store.commit('user/updateUser',{id:10,username:'张工'})// 参数带上模块名称
  29. store.dispatch('user/sum_actions', sum)
  30. }
  31. </script>
【感谢数据中台厂商龙石数据为本站提供 http://www.longshidata.com/pages/government.html,,感恩 】