vuex+Es6语法补充-Promise
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的更多相关文章
- es6语法中promise的使用方法
Promise是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Pro ...
- es6 语法 (Promise)
{ // 基本定义 let ajax = function(callback) { console.log('执行'); //先输出 1 执行 setTimeout(function() { call ...
- ES6语法 promise用法
ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...
- ES6新增语法(五)——Promise详解
Promise介绍 promise是一个对象,从它可以获取异步操作的消息.有all.race.reject.resolve这几个方法,原型上有then.catch等方法. Promise的两个特点: ...
- ES6语法知识
let/const(常用) let,const用于声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(通俗讲就是一个花括号内是一个新的作用域) 这里外部的 ...
- webpack中使用babel处理es6语法
index.js const arr = [ new Promise(()=>{}), new Promise(()=>{}) ]; arr.map(item => { consol ...
- 把JavaScript代码改成ES6语法不完全指南
目录 * 核心例子 * 修改成静态变量(const)或块级变量(let) * 开始修改 * 疑问解释(重复定义会发生什么) * 疑问解释(let的块级作用域是怎样的) * 疑问解释(const定义的变 ...
- Webstorm添加新建.vue文件功能并支持高亮vue语法和es6语法
转载:https://blog.csdn.net/qq_33008701/article/details/56486893 Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法 ...
- 在Node中使用ES6语法
Node本身已经支持部分ES6语法,但是import export,以及async await(Node 8 已经支持)等一些语法,我们还是无法使用.为了能使用这些新特性,我们就需要使用babel把E ...
随机推荐
- Vuet.js规则详解,它是你不知道的强大功能?
Vuet.js是什么? Vuet.js是给Vue.js提供状态管理的一个工具,与vuex不同,它是一种崇尚规则定制的状态管理模式.事先将状态更新的规则写好,然后将规则注入到组件中,然后状态按照预订的规 ...
- python-输入列表,求列表元素和(eval输入应用)
在一行中输入列表,输出列表元素的和. 输入格式: 一行中输入列表. 输出格式: 在一行中输出列表元素的和. 输入样例: [3,8,-5] 输出样例: 6 代码: a = eval(input()) t ...
- 微信支付之微信H5支付(坑,ajax不支持重定向跳转)
这里讲的是 微信h5支付, 是微信以外的手机浏览器调用微信h5支付 h5支付: H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起 ...
- Blazor组件自做七 : 使用JS隔离制作定位/持续定位组件
1. 运行截图 演示地址 2. 在文件夹wwwroot/lib,添加geolocation子文件夹,添加geolocation.js文件 本组件主要是调用浏览器两个API实现基于浏览器的定位功能,现代 ...
- springboot读取配置文件赋值给静态变量
1.实现InitializingBean接口,重写afterPropertiesSet方法,将@Value赋值给成员变量的属性赋值给静态变量,示例如下: /** * @Classname FileUt ...
- JavaScript学习总结4-规范
昨天学习了JS的严格检查模式,今天做一点补充 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...
- partTwo自动出题程序第一阶段
课堂测试1:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 "软件" 代码实现 import java.util.Random;//import java.uti ...
- 使用 sh -x 进行 shell 脚本调试
转载请注明出处: sh -x 命令的执行,会将shell 命令的每一个执行步骤进行打印,可以查看到 整个命令或脚本的执行过程的 debug. sh -n 只读取shell脚本,检测语法错误,但不 ...
- 【面试普通人VS高手系列】HashMap是怎么解决哈希冲突的?
常用数据结构基本上是面试必问的问题,比如HashMap.LinkList.ConcurrentHashMap等. 关于HashMap,有个学员私信了我一个面试题说: "HashMap是怎么解 ...
- [原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定
SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...