vueX使用方法初步整理

vueX使用方法初步整理

vuex存储在内存,读取内存比读取硬盘速度要快
vuex是专为Vue.js开发的状态管理模式。
vuex用于组件之前的传值
vuex是响应式的,vuex值发生改变对应的组件也会相应的更新
刷新页面vuex存储的值会丢失

使用场景

  • 如果不打算开发大型单页面应该,最好不要使用Vuex
  • 中大型单页面应用可以考虑使用
  • 简单项目可以使用简单的store模式
  • 存放目录, 一般module存放的是子模块

使用方法

  1. 安装方法
   npm install vuex --save   或  npm install vuex -S 
   cnpm install vuex --save   或  cnpm install vuex -S 
   yarn install vuex
  1. 引用方式
improt Vue from 'vue'
improt Vuex from 'vuex'
Vue.user(Vuex) // 全局应用vuex
  1. 如何使用
// moduleA.js  子模块
const moduleA = {
  state: () => ({ count: 0 }),
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}
export default moduleA

improt Vue from 'vue'
improt Vuex from 'vuex'
improt moduleA from 'moduleA.js'
Vue.user(Vuex) // 全局应用vuex

const store = new Vuex.Store({
    // 可以理解为vue中的data,只不过这里的数据不能直接更改
    state: {
        count: 0
    }// 用来给state中的内容赋值的
    // 必须同步执行
    mutations: {
        // 此方法名可随意定义,接收两个值
        increment (state,value) {
            // 接收传入的值
            state.count = value
        }
    }// 可以理解为Vuex中的计算属性
    getters: {
        // 这个方法就是在内部处理count
        // 接收两个值,一个是state,一个是getters,
        // 可以调用其中的方法,属性
        getIncrement: (state,getters) => {
            return state.count++
        },
        getFun: (state,getters) => (id)=>{
            return state.count++
        }
    }// 更加灵活的使用
    // 可以包含任意操作
    actions: {
        // Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象
        increment (context) {
            context.commit('increment')
        }
    }// 每个模块拥有自己的 state、mutation、action、getter、
    // 甚至是嵌套子模块——从上至下进行同样方式的分割
    modules: {
        a: moduleA // 引入的子模块
    }
})
new Vue({
  el: '#app',
  store: store, // 将store 注入到vue中,方便使用
})

// --------在组件中使用vuex-----------------------
// state中的调用方式
this.$store.state.count // 取count值
// mutations中的使用方式
this.$store.commit("increment ", 1); // 给count传值 // 传的值可以是js所有类型
// 调用getters中的方法
this.$store.getters.getIncrement // 返回 1
this.$store.getters.getFun(2) // 方法
// actions调用方法
this.$store.dispatch('increment')
// 以载荷形式分发
this.$store.dispatch('incrementAsync', {
  amount: 10
})
// 以对象形式分发
this.$store.dispatch({
  type: 'incrementAsync',
  amount: 10
})
// modules 调用
this.$store.state.a.count

本文整理内容来自 vue官方文档:https://vuex.vuejs.org/zh/
纯粹为个人理解,未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值