当前位置:   article > 正文

vuex(一)vuex简介&vuex工作原理图&搭建vuex环境&vuex的小案例_vuex原理图

vuex原理图

1.Vuex简介

*什么是vuex:专门在vue中实现集中式状态(数据)管理的一个vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间的通信方式,且适用于任意组件间的通信

*什么时候用vuex:多个组件依赖于同一个状态;来自不同组件的行为需要变更同一状态

2.vuex工作原理图

(图片来源尚硅谷

3.搭建vuex环境

*在2022年2月7日,vue3成为了默认版本,如果执行npm i vue则直接安装vue3,同时vuex4随之变成默认版本,如果执行npm i vuex则直接安装vuex4,但vuex4只能在vue3中使用,如果当前使用的是vue2,则必须使用vuex3:npm i vuex@3

*安装:npm i vuex->创建store文件夹->在store文件夹下创建index.js,该js文件用于创建vuex中最为核心的store->在index.js里引入vue和vuex->使用Vue.use(Vuex)-> 在main.js里引入store

  1. //这是storexia的index文件
  2. //该文件用于创建vuex中最为核心的store
  3. //引入vue
  4. import Vue from 'vue'
  5. //引入vuex
  6. import Vuex from 'vuex'
  7. //应用vuex插件
  8. Vue.use(Vuex)
  9. //准备actions--用于响应组件中的动作
  10. const actions={}
  11. //准备mutations--用于操作数据
  12. const mutations={}
  13. //准备state--用于存储数据
  14. const state={}
  15. //创建并暴露store
  16. export default new Vuex.Store({
  17. actions,
  18. mutations,
  19. state
  20. })
  1. //这是main.js
  2. //引入Vue
  3. import Vue from 'vue'
  4. //引入App
  5. import App from './App.vue'
  6. //引入插件
  7. import vueResource from 'vue-resource'
  8. //引入store
  9. import store from './store/index.js'
  10. //关闭Vue的生产提示
  11. Vue.config.productionTip = false
  12. //使用插件
  13. Vue.use(vueResource)
  14. //创建vm
  15. new Vue({
  16. el:'#app',
  17. store,
  18. render: h => h(App),
  19. beforeCreate() {
  20. Vue.prototype.$bus = this
  21. }
  22. })

*至此,所有的vm和vc身上都有了$store

4.vuex的小案例

  1. <template>
  2. <div>
  3. <h1>当前求和为:{{$store.state.sum}}</h1>
  4. <select v-model.number="n">
  5. <option value="1">1</option>
  6. <option value="2">2</option>
  7. <option value="3">3</option>
  8. </select>
  9. <button @click="increment">+</button>
  10. <button @click="decrement">-</button>
  11. <button @click="incrementOdd">当前求和为奇数再加</button>
  12. <button @click="incrementWait">等一等再加</button>
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. name:'Count',
  18. data() {
  19. return {
  20. n:1, //用户选择的数字
  21. }
  22. },
  23. methods: {
  24. increment(){
  25. this.$store.dispatch('add',this.n)
  26. },
  27. decrement(){
  28. this.$store.dispatch('sub',this.n)
  29. },
  30. incrementOdd(){
  31. this.$store.dispatch('oddAdd',this.n)
  32. },
  33. incrementWait(){
  34. this.$store.dispatch('waitAdd',this.n)
  35. },
  36. },
  37. }
  38. </script>
  39. <style lang="css">
  40. button{
  41. margin-left: 5px;
  42. }
  43. </style>
  1. //该文件用于创建vuex中最为核心的store
  2. //引入vue
  3. import Vue from 'vue'
  4. //引入vuex
  5. import Vuex from 'vuex'
  6. //应用vuex插件
  7. Vue.use(Vuex)
  8. //准备actions--用于响应组件中的动作
  9. const actions={
  10. add(context,value){
  11. context.commit('ADD',value)
  12. },
  13. sub(context,value){
  14. context.commit('SUB',value)
  15. },
  16. oddAdd(context,value){
  17. if(context.state.sum%2==1){
  18. context.commit('ADD',value)
  19. }
  20. },
  21. waitAdd(context,value){
  22. setTimeout(() => {
  23. context.commit('ADD',value)
  24. }, 1000);
  25. }
  26. }
  27. //准备mutations--用于操作数据
  28. const mutations={
  29. ADD(state,value){
  30. state.sum+=value
  31. },
  32. SUB(state,value){
  33. state.sum-=value
  34. }
  35. }
  36. //准备state--用于存储数据
  37. const state={
  38. sum:0 //当前的和
  39. }
  40. //创建并暴露store
  41. export default new Vuex.Store({
  42. actions,
  43. mutations,
  44. state
  45. })

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/257140
推荐阅读
相关标签
  

闽ICP备14008679号