• Vuex的简介以及入门案例


    Vuex介绍

    Vuex是一种状态管理模式,它专为Vue.js应用程序开发设计。使用Vuex能够更好地组织Vue.js应用中的代码,并使代码更容易理解和维护。

    Vuex把应用的状态(数据)集中存储到一个全局的store对象中,并使用mutations(同步任务)和actions(异步任务)来修改状态。Vuex的数据流是单向的,当组件需要更新状态时,它将发起一个action,action又会commit一个mutation,mutation会修改state,state的变化会自动更新到所有涉及该状态的组件视图中。

    Vuex的核心概念包括state、getter、mutation、action、module等。

    - State:即应用的状态,存储到一个全局的store对象中。
    - Getter:类似于computed,用来对state进行计算,返回派生状态。
    - Mutation:修改state的唯一途径,在mutation函数内部修改state,且必须是同步的。
    - Action:异步操作的行为,可以包含多个mutation,通过dispatch来触发action。
    - Module:将大型的store拆分为多个小模块,每个小模块都有自己的state、getter、mutation、action。

    总之,Vuex是Vue.js应用中一种非常实用的状态管理工具,让我们可以更好地管理和维护应用的状态数据。

    图像解析

    官方图像解析

    传值的图像解析  

    Vuex的入门案例

    下载我们的Vuex的插件   npm install vuex -S​​​​​​​

    Vuex的存值和取值

    搭建Vue界面 
    page1
    1. <template>
    2. <div style="padding: 70px;">
    3. <h1>第一个界面</h1>
    4. <p>改变值</p>
    5. 请输入<input v-model="msg">
    6. <button @click="fun1">获取值</button>
    7. <button @click="fun2">改变值</button>
    8. <button @click="fun3">改变值(异步请求)</button>
    9. <button @click="fun4">改变值(异步请求后台数据)</button>
    10. </div>
    11. </template>
    12. <script>
    13. export default {
    14. data() {
    15. return {
    16. msg: '默认值'
    17. }
    18. },
    19. methods: {
    20. fun1() {
    21. let eduNames = this.$store.state.eduName;
    22. alert(eduNames);
    23. },
    24. fun2() {
    25. this.$store.commit('setEeduName', {
    26. eduName: this.msg
    27. })
    28. },
    29. //异步请求
    30. fun3() {
    31. this.$store.dispatch('setEeduNameAsync', {
    32. eduName: this.msg
    33. })
    34. },
    35. fun4(){
    36. this.$store.dispatch('setEeduNameAjax', {
    37. eduName: this.msg,
    38. _this:this
    39. })
    40. }
    41. }
    42. }
    43. </script>
    44. <style>
    45. </style>
    page2
    1. <template>
    2. <div>
    3. <h1>第二个界面</h1>
    4. {{eduName}}
    5. </div>
    6. </template>
    7. <script>
    8. export default {
    9. data() {
    10. return {
    11. msg: '默认值'
    12. }
    13. },
    14. computed: {
    15. eduName() {
    16. return this.$store.getters.getEeduName;
    17. }
    18. }
    19. }
    20. </script>
    21. <style>
    22. </style>
    搭建架子
    1. import page1 from '@/views/vuex/page1'
    2. import page2 from '@/views/vuex/page2'
    3. {
    4. path: '/vuex/page1',
    5. name: 'page1',
    6. component: page1
    7. },
    8. {
    9. path: '/vuex/page2',
    10. name: 'page2',
    11. component: page2
    12. }
    定义变量

    在我们的state.js中定义变量

    1. // 定义变量
    2. export default {
    3. eduName:'5211314'
    4. }
    mutations.js
    1. //设置值
    2. export default {
    3. setEeduName:(state,payload)=>{
    4. state.eduName=payload.eduName;
    5. }
    6. }
    getter.js
    1. // /取值
    2. export default {
    3. getEeduName:(state)=>{
    4. return state.eduName;
    5. }
    6. }
    整合资源
    1. import Vue from 'vue'
    2. import Vuex from 'vuex'
    3. import state from './state'
    4. import getters from './getters'
    5. import actions from './actions'
    6. import mutations from './mutations'
    7. Vue.use(Vuex)
    8. const store = new Vuex.Store({
    9. state,
    10. getters,
    11. actions,
    12. mutations
    13. })
    14. export default store

  • 相关阅读:
    【免杀前置课——Windows编程】三、第一个窗口程序——WINDOWS程序框架-消息、WINDOWS中应用程序如何接受消息
    使用二维码解决固定资产管理的难题
    大坝安全监测站 一体式监测站
    JS教程之 使用 Electron.JS 构建原生桌面应用程序乒乓游戏
    DN-DETR(CVPR 2022)
    【软考 系统架构设计师】案例分析④ 软件架构风格
    【吐血整理】2022年Java 基础高频面试题及答案(收藏)
    订单型批发制造企业经营分析123个指标大全(ODOO15/16)
    【论文阅读】Directional Connectivity-based Segmentation of Medical Images
    【系列教程】ChatGPT+ROS:打造智能无人机自主飞行的下一代解决方案✈️【一】将chatgpt集成到ROS中
  • 原文地址:https://blog.csdn.net/djssubddbj/article/details/133781734