当前位置: 首页 > news >正文

【vue】vue +element 搭建项目,vuex中的store使用

 

概述:

    每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:

 

    1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

    2. 你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

    3. store中 state为属性
    4. store中 getter为计算属性 store中 mutation用于更改状态
  • mutation必须是同步函数。
  • 采用store.commit 方法触发
store中的action类似于mutation,
  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。
  • Action 通过 store.dispatch 方法触发

 

应用:

1.依赖安装

npm install vuex --save

2.在src目录下新建文件夹 store,在该文件夹下创建store.js(此用法有报错,见下)

store.js

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        count: 0
    },
   mutations: {
      increment(state) {
        state.count++
      }
   }

})

export default store

main.js

import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import store from './store'


Vue.config.productionTip = false

Vue.use(ElementUI);


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

效果:(./store in ./src/main.js)

解决方案:将store.js更名为index.js

 index.vue

<template>
    <div class="app-container">
        <span>home</span>
    </div>
</template>
<script>
    export default {
        name:'home',
        created(){
            this.$store.commit('increment');
            console.log(this.$store.state.count);
        },
    }
</script>

效果:

 3.store用法2

在store文件夹下新建 一个名为modules文件夹,在此文件夹下创建practice.js

 practice.js

/**
 * 用于学习store
 */
const practice = {
    state: {
        count: 0
    },
    mutations: {
        increment(state) {
            state.count++
        }
    },
}
export default practice

stroe文件下创建getters.js

const getters = {
    practice_count: state => state.practice.count,

};
export default getters

store文件夹下创建index.js

import Vue from "vue";
import Vuex from "vuex";
import practice from './modules/practice';
import getters from './getters';

Vue.use(Vuex);



const store = new Vuex.Store({
    modules: {
        practice
    },
    getters
});
export default store

store.vue

<template>
    <div class="app-container">
        <div class="title">store-getter用法</div>
        <div class="padding-xxs">count值:{{practice_count}}</div>
        <div class="padding-xxs">count值2:{{$store.getters.practice_count}}</div>
    </div>
</template>
<script>
    import {mapGetters} from 'vuex';
    export default {
        name:'vueStoreDemo',
        data() {
            return {
            }
        },
        computed: {
            ...mapGetters([
                'practice_count'
            ])
        },
        created(){
            this.$store.commit('increment')
        },
        methods: {},
    }
</script>
<style>
    .title{
        font-size: 14px;
        padding-left: 20px;
        color: #333;
        line-height: 34px;
        background-color: #F5F5F5;
    }
</style>

效果:

 

 

 

 

  

 ....未完待续

 

 

 

 

 

 

 

 

 参考资料:https://www.cnblogs.com/yesyes/p/6659292.html

     https://www.cnblogs.com/chengkun101/p/7979153.html

     https://www.cnblogs.com/wisewrong/p/6344390.html

     https://www.cnblogs.com/first-time/p/6815036.html

     https://vuex.vuejs.org/zh-cn/intro.html

转载于:https://www.cnblogs.com/websmile/p/8884229.html

相关文章:

  • 面向对象进阶------模块 json pickle hashlib
  • ApiLeaf·可能是史上最省事的文档生成工具
  • CSDN日报20170226——《你离心想事成仅仅差一个计划》
  • 云服务能力评估“国标”出炉,新华三首批通过增强级认证
  • 会话管理(session)
  • 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
  • 分享一款本地音乐播放器源码
  • Swoft 源码剖析 - 代码自动更新机制
  • 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5
  • 移动端开发干货
  • Qcon 演讲纪实:详解如何在实时视频通话中实现AR功能
  • 大咖 | 卡耐基梅隆教授Tom Mitchell:人工智能在中国前景光明,有2点要注意
  • 注释那些事儿:前端代码质量系列文章(一)
  • 专访腾讯云沙开波:从无到有,打造全球领先调度系统
  • 巨杉数据库:金融级数据库未来方向
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • conda常用的命令
  • css布局,左右固定中间自适应实现
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • SegmentFault 2015 Top Rank
  • Spark学习笔记之相关记录
  • Swoft 源码剖析 - 代码自动更新机制
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 安卓应用性能调试和优化经验分享
  • 创建一个Struts2项目maven 方式
  • 如何实现 font-size 的响应式
  • 深度解析利用ES6进行Promise封装总结
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 移动端 h5开发相关内容总结(三)
  • 与 ConTeXt MkIV 官方文档的接驳
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #if #elif #endif
  • (0)Nginx 功能特性
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (简单) HDU 2612 Find a way,BFS。
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • *上位机的定义
  • .gitignore文件_Git:.gitignore
  • .NET导入Excel数据
  • .NET下的多线程编程—1-线程机制概述
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /etc/skel 目录作用
  • ??myeclipse+tomcat
  • @TableLogic注解说明,以及对增删改查的影响
  • [ JavaScript ] JSON方法
  • [ACM] hdu 1201 18岁生日
  • [Android]RecyclerView添加HeaderView出现宽度问题