美文网首页
vuex让页面响应更简单,一看就懂系列

vuex让页面响应更简单,一看就懂系列

作者: zhyzhyzz | 来源:发表于2019-03-29 16:25 被阅读0次

在单页面组件的开发中 Vue的vuex和React的Redux 都统称为同一状态管理,就是所谓的全局状态管理;简单的理解就是你在页面A做了一些操作需要页面C、B、D、分别去响应变更。父子组件传值都还能接受,跨组件传值的话就会有很大的阻碍。下面咱们一步一步地剖析下vuex的使用:

首先要安装、使用 vuex

首先在 vue 2.0+ 你的vue-cli项目中安装 vuex :

npm install vuex --save

在src目录下新建store文件夹,在其中再新建一个index.js,基本vuex操作都将在这里展开

main.js

import Vue from 'vue';
import App from './App';
import router from './router';
import store from './store;

new Vue({
  el: '#app',
  router,
  store,
  components: {
    App
  },
  template: '<App/>'
})

store=>index.js

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
    state:{//数据存放的
        number:1
    },
    mutations:{//可以理解为实际执行的函数,改变数据的
        add(state){
            state.number+=1
        },
        rev(state,cb){
            if(state.number<=0){
                cb()
            }else{
                state.number-=1
            }
            
        }
    },
    actions:{//操作数据用的
        addNumber(context){
            context.commit('add')
        },
        revNumber(context,cb){
            context.commit('rev',cb)
        }
    },
    getters:{//获取数据用的
        number(state){
            return state.number
        }
    }
})

组件test.vue

①方法

获取state中的数据可以使用:
this.$store.state.number ||  this.$store.getters.number
改变state中的数据可以使用:
this.$store.commit("add")//直接操作mutations
 || this.$store.dispatch("addNumber")//间接操作mutations

②方法

<template>
  <div class="aa">
      <button @click="revNumber(rev)">-</button>
      &nbsp;{{number}}&nbsp;
      <button @click="add">+</button>
  </div>
</template>
<script>
import {mapGetters,mapActions} from 'vuex';
export default {
  data() {
    return {};
  },
  computed: {
    ...mapGetters([
      'number'//获取到state数据。
    ])
  },
  mounted() {},
  methods:{
    rev(){//减到最小值后的回调
      console.log("已到达最小值")
    },
    ...mapActions([//可以直接使用@click
      "addNumber",
      "revNumber"
    ])
  }
};
</script>

页面test2.vue

<template>
  <div class="hello">
    {{number}}
<!-- 此处的number是会跟着test.vue页面的改变而改变, -->
  </div>
</template>
<script>
import {mapState} from 'vuex';
export default {
  data() {
    return {
      num: 0
    };
  },
  computed: mapState({
    number:state => state.number+1//默认+1,mapState与mapGetters的区别,让你少敲几次键盘..
  }),
  methods:{}
};
</script>

相关文章

  • vuex让页面响应更简单,一看就懂系列

    在单页面组件的开发中 Vue的vuex和React的Redux 都统称为同一状态管理,就是所谓的全局状态管理;简单...

  • Vuex入门

    (1)简单的页面中使用单向数据流 (2)vuex的流程图 (3)store 由于 store 中的状态是响应式的,...

  • Vue扩展

    VueX HTTP是无状态的,跨页面的数据无法共享,但Vue是单页面应用,VueX可以实现数据共享; VueX的更...

  • 解决vuex刷新页面数据丢失

    1、vuex刷新页面数据丢失 vue构建的项目中,vuex的状态存储是响应式的,当vue组件从store中读取状态...

  • #搭建Vue+TypeScript项目(三)

    vuex的使用 使用vuex-persistedstate持久化存储,你不想一刷新页面,vuex就消失吧,不想就用...

  • PHP 两个一维数组对应着转化成二维数组

    咱们简单一些,给你们个例子,一看就懂 秒懂的事

  • 2017-7-28

    收获 用 CSS 的@media 做了一个简单的响应式页面 JavaScript 的尺寸 响应式页面为什么需要最大...

  • 引爆店铺详情页转化率的2个密码,1个是秒懂,另一个是......

    提升手机端购物效率,秒懂原则,让画面简单直接,一看就懂。消费者没耐心接受长长的文字引导,2秒看的懂才是成交的关健!...

  • vue的优势

    vue是单页面应用,页面局部刷新 ,响应的数据绑定/响应式编程,组件化,轻量级框架,简单易学,双向数据绑定,视图数...

  • 简单响应式页面实现

    刚写了一个如上图所示的响应式页面,代码如下: 代码预览地址:http://mycoding666.coding.m...

网友评论

      本文标题:vuex让页面响应更简单,一看就懂系列

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