• 个人技术博客


    一、技术概述

    这个技术是做什么?学习该技术的原因,技术的难点在哪里

    数据要全局显示的工具。Vuex应用的核心就是store(仓库),当Vue组件从store中读取数据的时候,若数据发生变化,那么相应的组件也会相应地得到高效更新。

    2、技术详述,描述你是如何实现和使用该技术的,要求配合代码和流程图详细描述。

    1、首先,我们需要声明一个store的index.js文件:

    import Vue from 'vue'
    import Vuex from 'vuex'
    import getters from './getters'
    import app from './modules/app'
    import settings from './modules/settings'
    // import tagsView from './modules/tagsView'
    import user from './modules/user'
    import permission from './modules/permission'
    
    Vue.use(Vuex)
    const store = new Vuex.Store({
      modules: {
        app,
        settings,
        // tagsView,
        user,
        permission
      },
      getters
    })
    
    export default store
    
    

    2、在modules文件夹下,存储的相关数据类型:

     state: {
    
        //这里放全局参数
    
      },
    
      mutations: {
    
        //这里是set方法
    
      },
    
     getters: {        //这里是get方法   },
    
      actions: {
    
        //action 属性内,可以定义异步操作逻辑,以满足某些业务场景要求
    
      },
    
      modules: {
    
    //为了给全局变量分组,所以需要写提前声明其他store文件,然后引入这里
    
      }
    
    

    3、定义一个getters.js文件将访问的属性export

    const getters = {
      sidebar: state => state.app.sidebar,
      device: state => state.app.device,
      token: state => state.user.token,
      avatar: state => state.user.avatar,
      name: state => state.user.username,
      nickname: state => state.user.nickname,
      userId: state => state.user.userid,
      email: state => state.user.email,
      major: state => state.user.major,
      slogan: state => state.user.slogan,
      phone: state => state.user.phone,
      roles: state => state.user.roles,
      permission_routes: state => state.permission.routes
      // visitedViews: state => state.tagsView.visitedViews,
      // cachedViews: state => state.tagsView.cachedViews
    }
    export default getters
    

    4、可以在Vue中通过

    this.$store.getters.userId
    

    就可访问到全局变量userId。

    三、技术使用中遇到的问题和解决过程。

    在vuex.store中
    state属性是用来定义公共变量的
    mutations属性,在state中的变量只能在mutations通过方法修改
    action属性,定义异步操作。
    getters属性,可获取返回值,或者函数

    在store中修改全局变量的方法需要调用函数commit才能够修改值

    具体的调用方法是:store.commit(调用的函数,参数)

    四、进行总结

    如果不只用Vuex.store可能会带来一下问题
    1、可维护性会下降,你要想修改数据,你得维护三个地方

    2、可读性会下降,因为一个组件里的数据,你根本就看不出来是从哪来的

    3、增加耦合,大量的上传派发,会让耦合性大大的增加,本来Vue用Component就是为了减少耦合,现在这么用,和组件化的初衷相背。

    五、参考文献、参考博客

    Vuex状态管理模式的面试题及答案

  • 相关阅读:
    206. Reverse Linked List
    简介AngularJS中使用factory和service的方法
    如何写一手漂亮的模型:面向对象编程的设计原则综述
    webpack入门操作教程
    webpack4.0.1安装问题和webpack.config.js的配置变化
    webpack.config.js配置遇到Error: Cannot find module '@babel/core'&&Cannot find module '@babel/plugin-transform-react-jsx' 问题
    解决webpack打包报错: Cannot find module '@webassemblyjs/wasm-parser'
    docker-compose介绍
    .NET Core+MySql+Nginx 容器化部署
    .net core使用ef core操作mysql数据库
  • 原文地址:https://www.cnblogs.com/zhixinlin/p/13192844.html
Copyright © 2020-2023  润新知