还有不懂vuex吗?看完你就理解了

2023-08-23 0 274

1.甚么是vuex?

非官方的认知是:Vuex 是两个专为 Vue.js 应用领域软件开发的状况区域化。它选用封闭式repeats应用领域的大部份模块的状况,并以适当的准则确保状况以一类可预估的形式发生改变。Vuex 也软件系统到 Vue 的非官方增容辅助工具 devtools extension,提供更多了譬如零实用性的 time-travel 增容、状况镜像引入求出等高阶增容机能。

2.甚么又是状况管理组织工作呢?

让他们从两个单纯的 Vue 算数应用领域已经开始:

new Vue({ // state data () { return { count: 0 } }, // view template: ` <div>{{ count }}</div> `, // actions methods: { increment () { this.count++ } } })

那个状况管理组织工作主要包括四个部份:

state,驱动力应用领域的管理组织工作辅助工具;

view,以新闻稿形式将 state 态射到快照;

actions,积极响应在 view 上的使用者输出引致的状况变动。

3.vuex的组织工作业务流程

还有不懂vuex吗?看完你就理解了

vue官网给的业务流程图

首先,Vue模块如果调用某个VueX的方法过程中需要向后端请求时或者说出现异步操作时,需要dispatch VueX中actions的方法,以确保数据的同步。可以说,action的存在就是为了让mutations中的方法能在异步操作中起作用。

如果没有异步操作,那么他们就可以直接在模块内提交状况中的Mutations中自己编写的方法来达成对state成员的操作。注意,1.3.3节中有提到,不建议在模块中直接对state中的成员进行操作,这是因为直接修改(例如:this.$store.state.name = hello)的话不能被VueDevtools所监控到。

4. Mutations

mutations是操作state数据的方法的集合,比如对该数据的修改、增加、删除等等。

4.1 Mutations使用方法

state是当前VueX对象中的state

payload是该方法在被调用时传递参数使用的

例如,他们编写两个方法,当被执行时,能把下例中的name值修改为”jack”,他们只需要这样做

index.js

import Vue from vue import Vuex from vuex Vue.use(Vuex) const store = new Vuex.store({ state:{ name:helloVueX }, mutations:{ //es6语法,等同edit:funcion(){…}edit(state){ state.name =jack } } }) export default store

而在模块中,他们需要这样去调用那个mutation——例如在App.vue的某个method中:

this.$store.commit(edit)

5.Actions

由于直接在mutation方法中进行异步操作,将会引起数据失效。所以提供更多了Actions来专门进行异步操作,最终提交mutation方法。

Actions中的方法有两个默认参数

context 上下文(相当于箭头函数中的this)对象

payload 挂载参数

例如,他们在两秒中后执行2.2.2节中的edit方法

由于setTimeout是异步操作,所以需要使用actions

actions:{ aEdit(context,payload){ setTimeout(()=>{ context.commit(edit,payload) },2000) } }

6.规范目录结构

store:.actions.jsgetters.jsindex.jsmutations.jsmutations_type.js##该项为存放mutaions方法常量的文件,按需要可加入 │ └─modules Astore.js

对应的内容存放在对应的文件中,和以前一样,在index.js中存放并求出store。state中的数据尽量放在index.js中。而modules中的Astore局部模块状况如果多的话也可以进行细分。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务