美文网首页
1.手把手教你使用Vuex - 新建vue项目并安装vuex插件

1.手把手教你使用Vuex - 新建vue项目并安装vuex插件

作者: 木头就是我呀 | 来源:发表于2020-03-09 21:17 被阅读0次

🤓 OK,相信你看完上篇的文集介绍后,对vuex产生了浓厚的兴趣,哇!!!这是个什么神仙插件,我要用!!!
不要着急,这一篇咱们就来看看怎么在vue项目中使用起来vuex。
come on baby!💃

  • 🤡 首先,我们先初始化一个项目,在这里我们来复习一下:

    • 使用命令行初始化 $ vue init webpack my-vuex
    • 选择你需要的配置(最后我一般选择yarn)


      image.png
    • 编译器打开
  • 🤖 安装vuex

    • 进入项目中,运行命令yarn add vuex -S或者yarn add vuex这两种方式都会将vuex安装到你的package.json的dependencies里面,为什么呢,因为我们不只是开发用,我们线上也需要是吧,对于安装到devDependencies还是dependencies里面,请参考这里:Vue package.json中的devDependencies和dependencies的区别
      安装成功
  • 🧐 配置vuex,使其工作起来

    • 创建store/index.js文件,文件位于下面的路径下

      src
       |__assets
       |__components
       |__store
            |__index.js
      

      文件内容如下:

      import Vue from 'vue'
      import Vuex from 'vuex'
      
      Vue.use(Vuex)
      
      const store = new Vuex.Store({
        state:{
          loading: false,  <----- 定义一个loading状态,以供全局使用
          todoList : [    <----- 定义一个todoList列表,以供全局使用
            {id:1,name:'11'},
            {id:2,name:'22'},
            {id:3,name:'33'},
          ]
        }
      })
      
      export default store
      
    • 修改main.js

      import Vue from 'vue'
      import App from './App'    
      import store from '@/store/index'   <----- 导入我们上面导出的store对象
      
      Vue.config.productionTip = false
      
      new Vue({
        el: '#app',
        components: { App },
        store, <----- 添加到vue实例上
        template: '<App/>'
      })
      
    • 修改App.vue

      <template>
        <div id="app">
          <h2>Are you OK?</h2> <----- 换成你喜欢的话,hhh
        </div>
      </template>
      
      <script>
      export default {
        name: 'App',
        mounted() {
          console.log(this.$store.state.todoList); <-----即可直接输出vuex里面的todoList状态
        }
      }
      </script>
      
      <style>
      #app {
        text-align: center;
        margin-top: 60px;
      }
      </style>
      
    • 🤪 此时,启动项目yarn dev,即可在控制台输出刚才我们定义在store中的todoList的值。

      image.png
    • 🤖 官方建议1
      官方建议我们以上操作this.$store.state.XXX最好放在计算属性中,当然,我也建议你这么使用,这样可以让你的代码看起来更优雅一些,就像这样(多余的代码就不贴出来了),此时可以得到和上面一样的效果:

      export default {
        name: 'App',
        computed:{
          getTodoList(){
            return this.$store.state.todoList
          }
        },
        mounted() {
          console.log(this.getTodoList);
        }
      }
      
    • 🤖 官方建议2
      是不是每次都写this.$store.state.XXX让你感到厌烦,你实在不想写这个东西怎么办,当然有解决方案,就像下面这样(多余的代码就不贴出来了):

      <script>
      import {mapState} from 'vuex'  <----- 从vuex中导入mapState
      export default {
        name: 'App',
        computed:{
          getTodoList(){
            return this.$store.state.todoList
          },
          ...mapState([  <----- 解构到计算属性中
            'loading'  <----- 你想使用的state中的值
          ])
        },
        mounted() {
          console.log(this.loading);  <----- 经过解构后,自动就添加到了计算属性中,此时就可以直接像访问计算属性一样,访问它。
        }
      }
      </script>
      

      你甚至可以在解构的时候给它赋别名,取外号,就像这样(部分代码):

      ...mapState({
        aliasName:'loading'
      })
      

🤗 至此,vue项目初始化并且安装上vuex就结束了,此时你可以很轻易的在你的项目任意地方通过this.$store.state访问到vuex,是不是十分方便呢?接下来,我们介绍一种”修饰读“的方案---Getter。

相关文章

网友评论

      本文标题:1.手把手教你使用Vuex - 新建vue项目并安装vuex插件

      本文链接:https://www.haomeiwen.com/subject/hllmdhtx.html