面试-Vuex

996 阅读2分钟

你有写过vuex中store的插件吗?

Vuex 的 store 接受 plugins 选项,这个选项暴露出每次 mutation 的钩子。Vuex 插件就是一个函数,它接收 store 作为唯一参数:

const myPlugin = store => {
  // 当 store 初始化后调用
  store.subscribe((mutation, state) => {
    // 每次 mutation 之后调用
    // mutation 的格式为 { type, payload }
  });
};

然后像这样使用:

const store = new Vuex.Store({
  // ...
  plugins: [myPlugin]
});

例子 Vuex 自带一个日志插件用于一般的调试

import createLogger from 'vuex/dist/logger'

const store = new Vuex.Store({
  plugins: [createLogger()]
})

你有使用过vuex的module吗?主要是在什么场景下使用?

把状态全部集中在状态树上,非常难以维护。 按模块分成多个module,状态树延伸多个分支,模块的状态内聚,主枝干放全局共享状态

vuex中actions和mutations有什么区别?

mutations可以直接修改state,但只能包含同步操作,同时,只能通过提交commit调用。actions是用来触发mutations的,它无法直接改变state,它可以包含异步操作,它只能通过store.dispatch触发

你觉得vuex有什么缺点

工具都是用来提高工作效率的,如果不能,那就说明工具用的不对。如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。比如就几个状态的话 不用比较好

vuex怎么知道state是通过mutation修改还是外部直接修改的?

通过$watch监听mutation的commit函数中_committing是否为true

请求数据是写在组件的methods中还是在vuex的action中?

数据需要在vuex中维护就在actions里面请求,否则在组件内请求。具体情况具体分析。

vuex的state、getter、mutation、action、module特性分别是什么?

state, 状态初始化, 并实施观察

getter, 获取数据用于view或data中使用

mutation: 内部处理state变化

action: 处理外部交互

module: 模块化以上四个

你理解的vuex是什么呢?哪些场景会用到?不用会有问题吗?有哪些特性?

长期维护的项目,因为长期维护的项目不能保证3层组件设计。肯定会有第4层,依次类推项目越来越难维护。从4层调第一层的方法太困难,中间有夹杂着其他的逻辑耦合。所有这个是我用vuex的目的,抽离公共的东西,到vuex方便维护