安装

安装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引入组件

import Vue from 'vue'
import Vuex from 'vuex'

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

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

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

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

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

<script>
export default {
//data 只能在本组件被改变
data() {
return {
n: this.$store.state.count //n的初始值从vuex的state中拿
}
}
}
</script>

或者

<p></p>

##更改状态

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

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

mutation更改状态

在store中的index.js更改状态

import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex); //定义store
//vuex中的状态是响应的 let store = new Vuex.Store({
state: {
count: 110 //定义一个状态
},
mutations: {
updatedCount(state, payload) { //改变state状态
state.count += payload.add;
}
}
}) export default store

commit 提交更改

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

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

import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex); //mock数据
const shopList = [
{
id: 123,
count: 2,
},
{
id: 456,
count: 3
}
] //定义store
//vuex中的状态是响应的 let store = new Vuex.Store({
//定义应用的单一状态书,用一个对象就包含了全部的应用层级转态
state: {
shopList //定义一个状态
}, //getter(派发的状态): 抽离操作转态的逻辑,可被多组件使用
getters : {
totals(state){
//reduce 数组的方法
//reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,0表示和初始值为0.
return state.shopList.reduce((n,item) => n + item.count,0)
}
}, //要使改变状态可被记录,必须要commit一个mutation; mutation必须是同步更新转态.
mutations: {
//只要提交mutation就有记录,如果mutation中有异步操作,记录的还是之前的值
updatedCountById(state,payload) { //改变state状态 /*setTimeout(() => {
let item = state.shopList.find(item => item.id == payload.id)
item.count += 1;
},3000);*/ let item = state.shopList.find(item => item.id == payload.id);
item.count += 1; },
reduceCountById(state,payload) {
let item = state.shopList.find(item => item.id == payload.id)
console.log(payload)
if(item.count <= 0 ){
alert('数量不能少于0');
return false;
}
item.count -=1;
}
},
actions: {
updateCountAction(store, parmas) {
//异步操作放在这里
setTimeout(() => {
store.commit('updatedCountById', parmas)
},1000)
}
}
}) 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. vue-cli3解决跨域问题

    在 vue.config.js里面配置 devServer: { proxy: { '/': { // search为转发路径 target: 'http://www.baidu.com', // 目 ...

  2. Android开发学习4

    学习内容: 1.RecyclerView 2.WebView

  3. Java快速输入输出

    一.StreamTokenizer实现快速输入 需要的jar包 import java.io.BufferedReader;import java.io.IOException;import java ...

  4. python脚本实现自动安装nginx

    本文python脚本实现自动化安装是源码安装.实现任意版本安装,默认版本是1.13.11,也可以更改默认版本,手动配置安装目录. 环境:Ubuntu16.04,python3以上版本,Ubuntu自带 ...

  5. PRaCtice[1]

    目录 ID-3学习 代码实现 1. 样例数据集 2.信息熵的计算 ID-3学习 代码实现 该项目采用了业界领先的 TDD(TreeNewBee-Driven Development,吹牛逼导向开发模式 ...

  6. PAT甲级——1009 Product of Polynomials

    PATA1009 Product of Polynomials Output Specification: For each test case you should output the produ ...

  7. PAT甲级——1006 Sign In and Sign Out

    PATA1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the compu ...

  8. kubernetes flannel 网卡绑定错误,故障排查

    kubernetes 新加了个node,状态Ready,但调度过去的任务,都执行异常 查看异常节点日志 `Error adding net work: open run/flannel/subnet. ...

  9. tomcat端口占用异常

    错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009) 2011年01月18日 01:34:00 阅读数:202700 启动Tomcat服务器报错: ...

  10. appium自动化的工作原理(1)

    用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https: ...