vue-cli学习笔记 03、Vuex(数据存储方案)(二)

简介: vue-cli学习笔记 03、Vuex(数据存储方案)(二)

三、VueX基本使用操作(使用Composition API)


说明:这里演示使用Composition API来进行store全局变量的取值与修改操作。


xxx.vue:核心,取值与发送修改指令都在setup()中执行。


<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png" />
    <h1>store.name=>{{ name }}</h1>
    <button @click="handleClick('liner')">修改store.name=>liner</button>
  </div>
</template>
<script>
// 引入toRefs、useStore函数
import { toRefs } from "vue";
import { useStore } from "vuex";
export default {
  name: "Home",
  components: {},
  setup() {
    const store = useStore(); //取到store全局对象
    // 1、取全局变量操作
    const { name } = toRefs(store.state); // 从store中拿取到state全局对象,并进行解构赋值
    // 2、发送指令修改全局变量操作
    const handleClick = () => {
      store.dispatch("change", "liner");
    };
    return { handleClick, name };
  },
};
</script>



index.js


import { createStore } from 'vuex'
export default createStore({
  state: {
    name: "changlu"
  },
  mutations: {
    change(state, str) {
      state.name = str;
    }
  },
  actions: {
    change(store, str) {
      setTimeout(() => {
        store.commit("change", str);
      }, 2000);
    }
  },
  modules: {
  }
})





四、vue-cli中使用vuex


若是我们想要将一些变量值进行全局管理,此时我们可以使用vuex。


第一步:


npm install vuex --save


第二步:




首先是store/modules.user.js:可以表示单个vuex对象(user)


const user = {
  state: {  // 定义了两个变量
    isLogin: false,
    userId: '123456'
  },
  mutations: {
    SET_USERID: (state, userId) => {
      state.token = userId
    },
    SET_ISLOGIN: (state, isLogin) => {
      state.token = isLogin
    }
  },
  actions: {
    // 登录
    Login ({ commit }, userInfo) {
      console.log('userInfo=>', userInfo)
      return new Promise((resolve, reject) => {
        loginApi.login(userInfo).then((result) => {
          console.log('result=>', result)
          if (result.code === 200) {
            commit('SET_ISLOGIN', true) // 标识是否登陆成功
            commit('SET_USERID', result.result) // 添加用户id
          }
          resolve(result)
        }).catch(error => {
          reject(error)
        })
      })
    }
  }
}
export default user



store/getters.js:用于直接快速取到某个vuex对象值


const getters = {
  userId: state => state.user.userId
}
export default getters


store/index.js:创建vuex对象,引入vuex对象以及getters


import Vue from 'vue'
import Vuex from 'vuex'
// 可直接取值
import getters from './getters'
// 单个文件引入
import user from './modules/user'
Vue.use(Vuex)  // 使用vuex插件
const store = new Vuex.Store({
  modules: {   // 若是有多个vuex对象就统一在这里载入
    user
  },
  getters  // 这里是载入getters对象
})
export default store



最后当然是将创建好的store对象直接挂载到vue对象上!也就是main.js:


import store from './store' // 引入store对象
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  store  //这里来插入store对象
})


第三步:定义好vuex对象,那当然是使用了


//取值:
//①通过vuex对象来取出属性值(可直接取)
this.$store.state.user.userId   //取到user对象里的
//②直接通过getters来取出
this.$store.getters.userId
//修改值:需要经过action->mutations来进行取值,action统一进行异步操作,mutations来进行同步操作(规范)
handleLogin (auto = false) {
    //登陆调用vuex中方法
    this.$store.dispatch('Login', this.loginForm).then((result) => {
        if (result.code === 200) {
            if (!auto) {
                this.$message({
                    showClose: true,
                    message: '登陆成功!',
                    type: 'success'
                })
            }
            // 记住我 存储到cookie用户名、密码7天
            if (this.remember) {
                Cookies.set('username', this.loginForm.username, { expires: 7 })
                Cookies.set('password', this.loginForm.password, { expires: 7 })
            }
            this.$router.push({ name: 'Commit', params: { userId: result.result } })
        } else {
            this.$message({
                showClose: true,
                message: result.message + ',登陆失败!',
                type: 'error'
            })
        }
    })
}


相关文章
|
存储 JavaScript
vue项目中数据存储(pinia)
vue项目中数据存储(pinia)
156 0
|
4月前
|
存储 开发框架 JavaScript
在Vue3项目中使用pinia代替Vuex进行数据存储
在Vue3项目中使用pinia代替Vuex进行数据存储
|
6月前
|
JavaScript 前端开发 算法
Vue3与Vue2:对比分析与迁移指南
Vue3与Vue2:对比分析与迁移指南
|
6月前
|
JavaScript 搜索推荐 前端开发
Vue工具和生态系统:Vue CLI是什么?它的作用是什么?
【4月更文挑战第17天】Vue CLI是官方的Vue.js开发加速器,它包含交互式项目模板和@vue/cli-service,基于webpack并预设配置。支持个性化配置和插件扩展,拥有大量官方插件,整合最佳前端工具。还提供图形化界面用于项目管理和创建。
43 0
|
JavaScript
Vue2向Vue3过度Vuex状态管理工具快速入门
Vue2向Vue3过度Vuex状态管理工具快速入门
86 0
|
JavaScript 前端开发 开发工具
Vue CLI:构建现代Vue.js应用的强大工具
Vue.js是一款流行的JavaScript框架,广受开发者欢迎,因其简洁、高效和易用而闻名。然而,构建大型、复杂的Vue.js应用需要一种强大的工具来管理项目结构、依赖、开发和构建过程。Vue CLI(命令行界面)正是为此而生。在本博客中,我们将深入研究Vue CLI的概念、功能、用法和最佳实践,以及如何使用它来简化Vue.js应用程序的开发流程。
82 0
vue2之vuex实现数据持久化(vuex-persistedstate)插件
vue2之vuex实现数据持久化(vuex-persistedstate)插件
605 0
|
存储 JavaScript API
Vue —— 进阶脚手架(三)(本地存储)
Vue —— 进阶脚手架(三)(本地存储)
122 0
|
JavaScript API
Vue3——基础安装以及配置
基础安装以及配置
367 0
|
JavaScript 前端开发 CDN
如何优化你的 vue-cli 项目?(下)
如何优化你的 vue-cli 项目?
287 0

相关实验场景

更多