Vuex状态管理(数据不分块)

vuex

  1. vuex是什么?
    • vuex是vue的状态管理工具
    • 状态就是数据
    • vuex是vue的一个插件
  2. vuex有什么作用
    • 是用来存储状态的。 类似与:本地存储、cookie 、database(数据库)
    • 可以组件通讯,就是多组件共享状态,也就是多个组件共享一个状态
    • vuex可以用来管理状态称为状态管理
  3. vuex在什么项目中使用?
    • 项目比较复杂的
    • 项目数据交互计较频繁的
    • 项目中服务端还有客户端绑定的数据较多的。 例如:表单
  4. vuex流程图
    • vuex的核心组成部分
      • state 状态
      • actions 动作创建者 【如:用户点击】
      • mutations 动作触发者 【修改状态】
    • vuex和后端交互的是actions
    • vuex修改state的是mutations
  5. vuex的流程
  • vuex的流程作用是:让我们项目中的数据处理井然有序
    component --dispatch—>actions–commit–>mutations—mutate—>state---->component
vuex状态管理
  • 一个项目中所有状态一起管理【一个文件管理】,数据不分块
  • 一个项目状态分开管理 【对应功能,对应文件来管理】,数据分块
代码

数据不分块
使用

  1. 用cli构建项目
  2. 安装vuex
    • $yarn add vuex或cnpm i vue
  3. 在src文件下建一个store(以后看到这个文件就知道是vuex),在store下见一个index.js
  4. 在store–>index.js下
    • 引入需要的模块
    • 创建store对象
      /* 
      store
      储存和管理状态的一个仓库
      */
      
      //1. 引入需要的模块
      import Vue from 'vue'
      import Vuex from 'vuex'
      
      Vue.use(Vuex)
      
      //2. 创建store对象
      const store = new Vuex.Store(Option)
      
      export default store
      
  5. 在main.js全局注入
    import Vue from 'vue'
    import App from './App.vue'
    import store from './store'
    
    Vue.config.productionTip = false
    
    new Vue({
      store,//目的是整个项目的组件都可以使用store的属性
      render: h => h(App),
    }).$mount('#app')
    
    
  6. store下的index.js
    	/* 
    store
    储存和管理状态的一个仓库
    */
    //这是数据不分块
    //1. 引入需要的模块
    import Vue from 'vue'
    import Vuex from 'vuex'
    import {INCREMENT} from './actionType'
    
    Vue.use(Vuex)
    
    //2. 创建store对象
    // const store = new Vuex(Option)
    // const store = new Vuex(
      // state,//状态
      // actions, //动作创建者-放是方法,创建动作,发送动作
      // mutations,//动作执行者- 放的方法
      // getters,//获取状态【几乎不用】
      // moudules //做数据分块的
    // )
    const store = new Vuex.Store({
      state: {
        count: 0,
        todos:[
          {
          id:1,
          task: '任务一'
          },
          {
            id: 2,
            task: '任务二'
          }
        ]
      },//状态
      actions:{
        increment (store) {
          const action = {
            type: INCREMENT//这里是动作类型
          }
          store.commit(action)
        }
      }, //动作创建者 -创建动作,发送动作-放方法
      mutations: {
        INCREMENT (state,action) {
          //state就是状态, action就是actions发来的动作
          state.count ++
        }
      },//动作执行者-放方法(方法名称就是上面创建的动作类型)
      // getters,//获取状态【几乎不用】
      // moudules //做数据分块的
    })
    
    export default store
    
    • 在store下创建actionType.js用来存放动作类型的
      // export  这是可以导出多个
      // export default 只能导出一个
      export const INCREMENT = "INCREMENT"
      
  7. 创建组件,到src下的–components下创建组件count.vue
<template>
  <div>
    <button @click="add">+</button>
    <p>count:{{this.$store.state.count}}</p>
  </div>
</template>

<script>
export default {
  mounted() {
    console.log( this.$store)
  },
  methods: {
    add () {
      this.$store.dispatch('increment')//dispatch中参数为action方法中的名称(increment)
    }
  }
}
</script>
  1. 在App.vue中使用组件
<template>
  <div id="app">
    <Count/>
  </div>
</template>

<script>
import Count from './components/count'

export default {
  name: 'App',
  components: {
    Count
  }
}
</script>

<style lang="stylus">
#app
  font-family Avenir, Helvetica, Arial, sans-serif
  -webkit-font-smoothing antialiased
  -moz-osx-font-smoothing grayscale
  text-align center
  color #2c3e50
  margin-top 60px
</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值