vuex的使用

Vuex 是一个专为 Vue.js 应用程序开发的状态管理库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,vuex基本很大程度的减轻了组件间的传值
vuex主要分为这几方面的内容
  • state:存储状态(变量)
  • mutations :修 改 状 态 并 且 是 同 步 的
  • actions:异步操作。在组件中使用是$store.dispath('')
  • modules:store 的子模块,为了开发大型项目,方便状态管理而使用的
首先要在组件内发送一个action请求

我们这里拿渲染一个轮播做例子

      <script>
      export default {
        data() {
              return {};
        },
        mounted() {
            //通过dispatch发送action请求
          this.$store.dispatch("GET_BANNERS_LIST");
        },
      }
      </script>
然后在store 下边的index页面中的action中接受

这里的话 我分了一个模块 在store那个文件夹中 新建了一个home.js文件 作为子模块

这是home.js文件 导出 然后在index.js中引入

index.js

好啦 重点来了 我们的home.js文件
      //这里的数据请求  是封装好接口的 我的上一篇博客讲了简单的封装axios请求  如果觉得麻烦的话 也可以直接使用axios请求  和在组件中使用的方法是一样的
      actions: {
          //   轮播
          GET_BANNERS_LIST(context){
              getBanners().then(res=>{
                //请求成功的回调
               // console.log(res.data.data)
                  //通过context.commit让mutations去处理数据
                  //两个参数  参数一:是自定义函数名  参数二:要传递的数据
                  context.commit('GET_BANNERS_LIST',res.data.data)
              }).catch(err=>{
                  console.log(err)
              })
             },
        }
然后在mutations中处理数据 但是这个前提是数据要在state中定义好初始化状态

然后是mutations中的代码

      mutations: {
          //   轮播
          GET_BANNERS_LIST(state,item){
              //state:是state中的状态  item:是action中  通过context.commit传递的第二个参数
              //将相对应想要修改的数据赋值
              state.bannersList=item;
              // console.log(state.bannersList)
          },
        },

这样的话 数据就处理好了 然后就是在组件中使用 在组件中是在computed 计算属性中获取的

      computed: {
          // 轮播
          bannersList() {
           return this.$store.state.homemodule.bannersList;
         }
      }
最后 直接使用 这里的轮播用了vant上的组件
       <!-- 轮播 -->
       <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
           <van-swipe-item v-for="(item,index) in bannersList" :key="index">
              <img class="zml_about_img" :src="item.banner_img" alt />
           </van-swipe-item>
       </van-swipe

这样的话 就实现了使用vuex
每天一个小知识点,加油!

posted @ 2020-08-21 00:27  哈哈O0O  阅读(108)  评论(0编辑  收藏  举报