Vuex 状态对象同步到 VUE 组件内

🌙
手机阅读
本文目录结构

把 Vuex 内的一个状态对象的属性,简写;

一共两种方式

  • Vuex 的基础搭建
  • mapState 辅助

DEMO 如下;

一、Vuex 的基础搭建

1.src 下面创建 store.js,文件内容如下

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex)

const options={
    //状态对象
    state: {
        count: 111
    },
    //触发状态
    mutations: {
        increment (state) {
            state.count++
        },
        jian(state){
            state.count
        }
    }
}
const store =new Vuex.Store(options)
export default store;

2.mainjs 中引用

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

import { create } from 'domain';
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
    el: "#app",
    router,
    store,
    render:h=>h(App)
})

3. 在 Vue 文件中使用

<p>Vuex的数据 {{$store.state.count}}</p>

下面开始正式做数据同步;

一、computed 动态计算

computed:{
    detailCount(){
        return this.$store.state.count
    }
},

在 vue 文件中直接使用组件内的数据即可;

<p>内部的数据 {{detailCount}}</p>

二、mapState 辅助;

在单独构建的版本中辅助函数为 Vuex.mapState 在组件内,先 import;

import { mapState } from vuex
computed:mapState({
    count : state => state.count
})

这样即可;还可以做下面这种简化的写法

computed:mapState(['count'])

下面这种方法,还是非常常用的;

如果想连 mutatios 里面的方法也一起简写;

可以下面这样;

import { mapState ,mapMutations } from 'vuex'

export default {
  name:"UserDetail",
  data(){
      return{
          logo:"AXIHE"

      }
  },
  computed: mapState(['count']),
  methods:mapMutations([
      'increment',
      'jian'
  ]),
  watch:{
      '$route'(to,form){
          console.log(to)
          console.log(form)
      }
  }
}

这样的话,就可以直接使用了;

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了