安装

安装vue-cli npm i -g vue-cli

生成目录 vue init webpack

启动开发环境 npm run dev

启动命令

npm install -g vue-cli

vue init webpack project-vue

cd project-vue

npm run dev

vue-cli 单文件组件

使用组件三部曲:引入组件、注册组件、使用组件

引入组件:import Hello from ‘./components/hello’

注册组件: components: { Hello:Hello }

使用组件:

Vuex

1.集中式存储管理状态
2.一种可预测的方式发生变化

状态 组件内部转态: 仅在一个组件内使用的状态(data字段)
应用级别状态: 多个组件公用的状态

什么情况下使用Vuex
1.多个视图依赖于同一状态
2.来自不同视图的行为需要变更同一状态

安装Vuex
npm i vuex –save

在src文件夹下面创建stroe文件夹,
然后再store文件夹下面创建index,js文件,
在index.js引入组件

  1. import Vue from 'vue'
  2. import Vuex from 'vuex'

作为插件使用
Vue.use(Vuex)

然后main.js 里面注入根实例
注入根实例
{ store }

将store在组件中使用
在store文件夹的index.js定义一个状态

  1. let store = new Vuex.Store({
  2. //定义应用的单一状态书,用一个对象就包含了全部的应用层级转态
  3. state: {
  4. count: 110 //定义一个状态
  5. }
  6. })

在组件里面使用状态,有两种方法

  1. <script>
  2. export default {
  3. //data 只能在本组件被改变
  4. data() {
  5. return {
  6. n: this.$store.state.count //n的初始值从vuex的state中拿
  7. }
  8. }
  9. }
  10. </script>

或者

  1. <p></p>

##更改状态

mutation (修改状态的唯一途径): 要使改变状态可被记录,必须要commit 一个 mutation ; mutation 必须是同步更新状态.

action (异步操作) : 异步操作产生结果 ; Action 提交的是 mutation ,而不是直接变更状态

mutation更改状态

在store中的index.js更改状态

  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex);
  4. //定义store
  5. //vuex中的状态是响应的
  6. let store = new Vuex.Store({
  7. state: {
  8. count: 110 //定义一个状态
  9. },
  10. mutations: {
  11. updatedCount(state, payload) { //改变state状态
  12. state.count += payload.add;
  13. }
  14. }
  15. })
  16. export default store

commit 提交更改

  1. <script>
  2. export default {
  3. methods: {
  4. changeCount() 大专栏  多个计数器在Vuex中的状态ss="p">{
  5. this.$store.commit('updatedCount',{
  6. add: 30
  7. })
  8. }
  9. }
  10. }
  11. </script>
  1. //getter(派发的状态): 抽离操作转态的逻辑,可被多组件使用
  2. getters : {
  3. totals(state){
  4. //reduce 数组的方法
  5. //reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,0表示和初始值为0.
  6. return state.shopList.reduce((n,item) => n + item.count,0)
  7. }
  8. }

action (异步操作) : 异步操作产生结果; Action 提交的是mutation,而不是直接变更状态

  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex);
  4. //mock数据
  5. const shopList = [
  6. {
  7. id: 123,
  8. count: 2,
  9. },
  10. {
  11. id: 456,
  12. count: 3
  13. }
  14. ]
  15. //定义store
  16. //vuex中的状态是响应的
  17. let store = new Vuex.Store({
  18. //定义应用的单一状态书,用一个对象就包含了全部的应用层级转态
  19. state: {
  20. shopList //定义一个状态
  21. },
  22. //getter(派发的状态): 抽离操作转态的逻辑,可被多组件使用
  23. getters : {
  24. totals(state){
  25. //reduce 数组的方法
  26. //reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,0表示和初始值为0.
  27. return state.shopList.reduce((n,item) => n + item.count,0)
  28. }
  29. },
  30. //要使改变状态可被记录,必须要commit一个mutation; mutation必须是同步更新转态.
  31. mutations: {
  32. //只要提交mutation就有记录,如果mutation中有异步操作,记录的还是之前的值
  33. updatedCountById(state,payload) { //改变state状态
  34. /*setTimeout(() => {
  35. let item = state.shopList.find(item => item.id == payload.id)
  36. item.count += 1;
  37. },3000);*/
  38. let item = state.shopList.find(item => item.id == payload.id);
  39. item.count += 1;
  40. },
  41. reduceCountById(state,payload) {
  42. let item = state.shopList.find(item => item.id == payload.id)
  43. console.log(payload)
  44. if(item.count <= 0 ){
  45. alert('数量不能少于0');
  46. return false;
  47. }
  48. item.count -=1;
  49. }
  50. },
  51. actions: {
  52. updateCountAction(store, parmas) {
  53. //异步操作放在这里
  54. setTimeout(() => {
  55. store.commit('updatedCountById', parmas)
  56. },1000)
  57. }
  58. }
  59. })
  60. export default store

vuex 使用原则

原则:

  1. 每个应用将仅仅包含一个store实例
  2. 更改store中的状态的唯一方法是提交mutation
  3. Mutation 必须是同步函数
  4. Action 可以包含任意异步操作
  5. Action 提交的是mutation,而不是直接更改状态

github地址: https://github.com/yyyyama/Vue-Project

多个计数器在Vuex中的状态的更多相关文章

  1. Vuex内容解析和vue cli项目中使用状态管理模式Vuex

    中文文档:vuex官方中文网站 一.vuex里面都有些什么内容? const store = new Vuex.Store({ state: { name: 'weish', age: }, gett ...

  2. 在vue组件中使用vuex的state状态对象的5种方式

    下面是store文件夹下的state.js和index.js内容 //state.js const state = { headerBgOpacity:0, loginStatus:0, count: ...

  3. vuex中store保存的数据,刷新页面会清空

    用vuex,项目中需要记录一些状态,来判断页面是否为登录状态和页面是否可被编辑,此时用到了vuex中的store来存储一个状态. //首先 安装vuex npm install vuex --save ...

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

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

  5. vuex 中五大核心以及map函数的应用

    什么是vuex? 我理解的vuex就是数据和状态的管理 如果在模块化构建系统中,请确保在开头调用了 Vue.use(Vuex) 五大核心: const store = new Vuex.Store({ ...

  6. 转 理解vuex -- vue的状态管理模式

    转自:https://segmentfault.com/a/1190000012015742 vuex是什么? 先引用vuex官网的话: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...

  7. vuex -- vue的状态管理模式

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态管理模式.集中式存储管理 一听就很高大 ...

  8. vue之mapMutaions的使用 && vuex中 action 用法示例 && api.js的使用

    vue之mapMutations的使用 我们通过Mutation来改变store中的state,方法往往是在子组件中使用 this.$store.commit(); 来实现,但是这样的缺点是不容易查看 ...

  9. vuex中使用对象展开运算符

    使用场景 当需要进行vuex进行数据状态管理的时候,会使用到mapGetters,mapState,还有自身的计算属性的时候,这个时候就会用到这个了! 1.首先需要安装 npm install bab ...

随机推荐

  1. Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述

    1. GUI概述: GUI全称为Graphical User Interface,叫做图形用户界面,也是一种交互方式(Interaction).早期计算机使用的命令行界面(command-line i ...

  2. 14 微服务电商【黑马乐优商城】:day01-springboot(Thymeleaf快速入门)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) :day01-springboot(Thyme ...

  3. Linux 进程信号量

    #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<sys/ipc.h&g ...

  4. 流程控制 if-while-for -语句

    if 语句是用来判断条件的真假,是否成立,如果为ture就执行,为flase则跳过 1.python用缩进表示代码的归属 2.同一缩进的代码,称之为代码块,默认缩进4个      if 语句结构   ...

  5. raw_input|active:|continue|break|

    a = "please" b = "say something:" c =a+b m = 0 a = True while a: m = int(raw_inp ...

  6. Table布局的优缺点

    总结 Table布局的缺点是比其它html标记占更多的字节,会阻挡浏览器渲染引擎的渲染顺序,会影响其内部的某些布局属性的生效,优点就是用table做表格是完全正确的 Tables的缺点 1.Table ...

  7. www、数组的equals、接口和抽象类、装箱拆箱、final赋值

    目录 2019.12.31 刷题笔记 2019.12.31 刷题笔记 www www是World Wide Web的缩写 数组的equals 数组是一个对象,不同类型的数组具有不同的类.数组是一种引用 ...

  8. Nginx_安全1

    Nginx 安全 nginx隐藏版本号 # 在Nginx的配置文件中进行修改,增加下面这个. server_tokens on; nginx对IP和目录限速 # Nginx可以通过HTTPLimitZ ...

  9. Java--java中的基本数据类型以及对应的包装类

    基本数据类型 序号 数据类型 长度(位数) 默认值 1 byte(整数型) 8 0 2 short(整数型) 16 0 3 int(整数型) 32 0 4 long(整数型) 64 0 5 float ...

  10. Notes_STL_List_And_Map

    //Description: 使用STL遇到的问题 //Create Date: 2019-07-08 09:19:15 //Author: channy Notes_STL_List_And_Map ...