| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> vue从入门到精通之【vuex】(七) -> 正文阅读 |
|
[JavaScript知识库]vue从入门到精通之【vuex】(七) |
vuex一个公用的大仓库,Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。 Vuex 实现了一个单向数据流,在全局拥有一个 state 存放数据,当组件要更改 state 中的数据时,必须通过?mutations?进行,mutations 同时提供了订阅者模式供外部插件调用获取 state 数据的更新。而当所有异步操作(常用于调用后端接口异步获取数据)或批量的同步操作需要走 actions,但 actions 也是无法直接修改 state 的,还是需要通过触发 mutations 中的方法,然后 mutations 来修改 state 的数据。数据变更后相应推送给组件,组件重新渲染到视图上。 vuex 是 vue 的状态管理器,存储的数据是响应式的。但是并不会保存起来,刷新之后就回到了初始状态,具体做法是在 vuex 里数据改变的时候把数据拷贝一份保存到 localStorage 里面,刷新之后如果 localStorage 里有保存的数据,取出来再替换 store 里的 state。 核心:State,Getter,Mutation,Action,Module
一、安装
二、创建仓库store在src下创建一个store文件夹,在文件夹里面创建一个index.js
修改main.js:
最后修改App.vue:
此时,启动项目npm run dev,即可在控制台输出刚才我们定义在store中的name的值。 三、使用State 类似于vue中的dataVuex 使用 state 来存储应用中需要共享的状态。为了能让 Vue 组件在 state更改后也随着更改,需要基于state 创建计算属性。
1.使用 {{this.$store.state.count}} (无缓存,不要用) 2.computed (有缓存) 如果数据没更新,就去缓存中去拿,数据更新就去获取最新的数据
3.mapState 辅助函数
注意://不能直接修改(页面数值能变,仓库数值不变),修改通过仓库管理员来处理 this.$store.state.count++; //通过仓库管理员来处理----》mutations
需要以相应的 type 调用 store.commit 方法:
Getter 类似于Vue中计算属性类似于 Vue 中的 计算属性(可以认为是 store 的计算属性,对Store中的数据进行加工处理形成新的数据),getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。 Getter 方法接受 state 作为其第一个参数: 1.使用?{{this.$store.getters.donearr}}无缓存不要用 2.computed
3.mapGetters 辅助函数
Mutations类似于vue中的methods 同步为什么不能在Mutation中直接异步 Mutation 用于变更 Store 中的数据。 只能通过 mutation 变更 Store 数据,不可以直接操作 Store 中的数据,通过commit一个mutation来修改,它的本质实际是一个function 通过这种方式虽然操作起来稍微繁琐一些,但是可以集中监控所有数据的变化 mutation 操作一定是同步的 我们每次提交 mutation 都会有一个记录,Vuex 这样做是为了更方便的记下每个数据改变的历史和轨迹,方便监听以及回滚之类的操作 1.使用 js中定义 mutation 通过commit调用
2.触发 mutations 时传递参数:
3.mapMutations辅助函数
Actions 类似于vue中的methods异步● Action 提交的是 mutation,而不是直接变更状态。(要通过Mutation) ● Action 可以包含任意异步操作。 vueX:注意:context---》{commit dispatch,state...} 注:不要在 mutations 函数中,执行异步操作,比如添加延时器 只有 mutations 中定义的函数,才有权利修改 state 中的数据;在 actions 中不能直接修改 state 中的数据,必须通过 context.commit 触发某个 mutation。 context:上下文对象,相当于箭头函数中的this,和 store 实例具有相同的属性和方法 payload:挂载的形参
1.使用 通过dispatch
2. mapActions 辅助函数
Modules 模块可以将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块 namespaced为true的作用是告诉vuex,该模块所有的state 、getters、mutations、actions里面的东西调用时都需要加上命名空间,这个命名空间就是该模块被improt时命名的名字。
1.使用 this.$store.state.a.msg; 2.computed
3.辅助函数的用法:3种
可以通过使用 createNamespacedHelpers 创建基于某个命名空间辅助函数。它返回一个对象,对象里有新的绑定在给定命名空间值上的组件绑定辅助函数:
四、作用可以方便的实现组件之间数据的共享 使用 Vuex 统一管理状态的好处: ● 能够在 Vuex 中集中管理共享的数据,易于开发和后期维护 ● 能够高效的实现组件之间的数据共享,提高开发效率 ● 存储在 Vuex 中的数据都是响应式的,能够实时保持数据与页面的同步 什么样的数据适合存储到 Vuex 中一般情况下,只有组件之间共享的数据,才有必要存储到 Vuex 中;对于组件的私有数据,依旧存储在组件自身的 data 中即可。
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:30:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |