Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理

单页面的状态管理/多页面状态管理

使用步骤:

// 1.导入
import Vuex from 'vuex'
// 2.安装插件
Vue.use(Vuex)
// 3.创建对象
const store = new Vuex.Store({
  state, // 状态
  mutations, // 同步信息变化
  actions, // 异步信息变化
  getters, // 变化属性 相当于computed属性
  modules: { // 模型
    a:moduleA
  }
})
// 4.导出
export default store

1.mutations状态更新

Mutation主要包括两部分:

字符串的事件类型(type)

一个回调函数(handler),该回调函数的第一个参数就是state。

// 定义方式:
    decrement(state){
      state.counter--
    }
// 通过mutations更新
    subtraction(){
      this.$store.commit('decrement')
    } // 传递参数:
    decrementCount(state,payload){
      // 普通提交
      // state.counter+=count
      // 特殊提交
      state.counter += payload.count
    },
// 通过mutations更新
    addCount(count){
      // 普通提交
      // this.$store.commit('decrementCount',count)
      // 特殊提交
      this.$store.commit({
        type: 'decrementCount',
        count // ccount的参数在下面button中面传递
          })
    } <button @click="addCount(5)">+5</button>

mutations响应规则:

当给state中的对象添加新属性时, 使用下面的方式:

方式一: 使用Vue.set(obj, 'newProp', 123)

方式二: 用新的对象给旧对象重新赋值

2.getters使用
  powerCounter(state){
    return state.counter*state.counter
  },
  more20stu(state){
    return state.students.filter(s=>s.age > 20)
  },
  more20stuLength(state,getters){
    return getters.more20stu.length
  },
  moreAgestu(state){
    // return function(age){
    //   return state.students.filter(s=>s.age>age)
    // }
    return age=>{
      return state.students.filter(s=>s.age>age)
    }
  }

3.actions使用

context是和store对象具有相同方法和属性的对象

我们可以通过context去进行commit相关的操作, 也可以获取context.state等

context是上下文 相当于store

 updateInfo(state){
        state.info.name='zranguai'
}
  
    clic(){
      // this.$store.commit('updateInfo')
      // this.$store.dispatch('aUpdateInfo',{
      //   message:'我是message',
      //   success: ()=>{
      //     console.log('打印成功');
          
      //   }
      // })
      this.$store.
      dispatch('aUpdateInfo','我是携带信息')
      .then(res=>{
        console.log('里面完成了提交');
        console.log(res);
      })
    },
  }
   
    <button @click='clic'>哈哈哈</button>

Es6语法补充-Promise

Promise是异步编程的一种解决方案

	// 1.定时器的异步事件
    new Promise((resolve,reject)=>{
      setTimeout(()=>{
        // 1.成功调用resolve
        resolve('hello')
        // 2.失败调用reject
        reject('error')
      },1000)
    }).then((data)=>{
        console.log(data);
        
      }).catch(err=>{
        console.log(err);
      })

2.Promise三种状态

pending:等待状态,比如正在进行网络请求,或者定时器没有到时间。

fulfill:满足状态,当我们主动回调了resolve时,就处于该状态,并且会回调.then()

reject:拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调.catch()

3.链式调用简写

1.return Promise.resovle(data)

2.return data

3.promise的all方法使用

  Promise.all([
      new Promise((resolve,reject)=>{
        setTimeout(()=>{
          resolve({
            name:'why',
            age:18
            })
        },2000)
      }),
      new Promise((resolve,reject)=>{
        setTimeout(()=>{
          resolve('result2')
        },2000)
      })
    ]).then(results=>{
      console.log(results);
    })

vuex+Es6语法补充-Promise的更多相关文章

  1. es6语法中promise的使用方法

    Promise是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Pro ...

  2. es6 语法 (Promise)

    { // 基本定义 let ajax = function(callback) { console.log('执行'); //先输出 1 执行 setTimeout(function() { call ...

  3. ES6语法 promise用法

    ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...

  4. ES6新增语法(五)——Promise详解

    Promise介绍 promise是一个对象,从它可以获取异步操作的消息.有all.race.reject.resolve这几个方法,原型上有then.catch等方法. Promise的两个特点: ...

  5. ES6语法知识

    let/const(常用) let,const用于声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(通俗讲就是一个花括号内是一个新的作用域) 这里外部的 ...

  6. webpack中使用babel处理es6语法

    index.js const arr = [ new Promise(()=>{}), new Promise(()=>{}) ]; arr.map(item => { consol ...

  7. 把JavaScript代码改成ES6语法不完全指南

    目录 * 核心例子 * 修改成静态变量(const)或块级变量(let) * 开始修改 * 疑问解释(重复定义会发生什么) * 疑问解释(let的块级作用域是怎样的) * 疑问解释(const定义的变 ...

  8. Webstorm添加新建.vue文件功能并支持高亮vue语法和es6语法

    转载:https://blog.csdn.net/qq_33008701/article/details/56486893 Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法 ...

  9. 在Node中使用ES6语法

    Node本身已经支持部分ES6语法,但是import export,以及async await(Node 8 已经支持)等一些语法,我们还是无法使用.为了能使用这些新特性,我们就需要使用babel把E ...

随机推荐

  1. 伪元素的margin值挤压主体元素解决

    伪元素的margin值挤压主体元素解决 主体是两个p标签,需要再其左侧添加一个竖线,很常见的需求 目标 前提条件 1. 右侧的文字个数不固定 问题 1. 需要让before元素为`float:left ...

  2. es6-Set与Map

    se5中的set与map 在est5中开发者使用对象属性来模拟.set多用于检查键的存在,map多用于提取数据. { let set = Object.create(null) set.foo = t ...

  3. Smith数的判断

    题目描述: smith数是指满足下列条件的可分解的整数: 其所有位数上的数字和等于其全部素数因子的数字之和. 例如,9975是smith数,9975=3*5*5*7*19,即9975的数字和=因子的数 ...

  4. Struts2-向值栈中存放数据

    1.第一种 获取值栈对象,调用值栈对象里面的set方法(该方法添加的是一个Map集合) //第一种方式,使用值栈对象获取对象里面的set方法 //1.获取值栈对象 ActionContext cont ...

  5. 设计模式学习笔记(十六)迭代器模式及其在Java 容器中的应用

    迭代器(Iterator)模式,也叫做游标(Cursor)模式.我们知道,在Java 容器中,为了提高容器遍历的方便性,把遍历逻辑从不同类型的集合类中抽取出来,避免向外部暴露集合容器的内部结构. 一. ...

  6. HTTP请求头格式和响应格式

    HTTP请求头格式 提示: 回车符 \r 换行符 \n 请求首行分析: 请求方式: GET 和 POST 方式: GET请求:地址栏访问.超链接访问都是get请求方式,get请求方式不安全,地址栏大小 ...

  7. linux目录结构知识

    1.系统目录结构介绍 1.目录结构特点 linux系统中的目录一切从根开始. Linux系统中的目录结构拥有层次. Linux系统中的目录需要挂载使用. 2.目录挂载初识 挂载的命令:mount mo ...

  8. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

  9. Java函数的学习

    函数的定义 - 定义的位置:定义在类的内部 - 组成部分: 函数修饰符 类型 函数名(形式参数){ 局部变量: 注释: 函数体: } 函数的调用 - 调用函数时使用 : `函数名():` - 函数在执 ...

  10. 『现学现忘』Git基础 — 14、Git基础操作的总结与补充

    目录 1.Git本地版本库结构 2.Git常用操作方法 3.补充:添加多个文件到暂存区 4.补充:提交操作未写备注 5.补充:从工作区直接提交到版本库 1.Git本地版本库结构 如下图所示: 工作区( ...