目录
1.Vuex和单纯的全局对象有什么区别?
Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会得到高效更新。不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解应用。
2.vuex是什么?怎么使用?哪种功能场景使用它
vuex 就是一个仓库,仓库里放了很多对象。
state 存放的是数据状态,不可以直接修改里面的数据。
getters类似vue的计算属性,主要用来过滤一些数据。
mutations:存放的是动态修改Vuex的state中保存的数据状态的方法。
actions:保存的触发mutations中方法的方法,可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。
一般什么样的数据会放在 State 中呢?
目前主要有两种数据会使用 vuex 进行管理
1、组件之间全局共享的数据
2、通过后端异步请求的数据 比如做加入购物车、登录状态等都可以使用Vuex来管理数据状态
怎么使用Vuex?
在main.js引入store,注入。新建了一个目录store,… export
场景有:单页应用中,组件之间的状态、音乐播放、登录状态、加入购物车
3.写出nextTick的作用,以及用法
作用:获取数据更新之后的dom元素
用法:
将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。
new Vue({
methods: {
// ...
example: function () {
// 修改数据
this.message = 'changed'
// DOM 还没有更新
this.$nextTick(function () {
// DOM 现在更新了
// `this` 绑定到当前实例
this.doSomethingElse()
})
}
}
})
4.ref/$refs通信方式与获取dom
.ref可以作为父子组件通信的一种方式,通信形式为父组件引用子组件。
特殊属性ref
1.在vue中,组件或原生标签上的ref属性用于注册引用信息。
2.通过ref我们可以获取
(1)原生标签的dom对象
(2)组件实例,
3.通过获取的原生标签的dom对象,我们可以使用
(1)dom对象上的属性
(2)dom对象的方法
4.通过组件实例我们可以使用组件的
(1)数据(定义的data,props,computed等等)
(2)方法。
5.组件实例属性$refs
a.每一个组件都有一个实例属性$refs,用于获取该组件下所有注册的引用信息
b.通过获取的引用,父组件可以直接访问该引用子组件的数据和方法,从而实现通信。
注意事项
1.$refs 只会在组件渲染完成之后生效,且有时就算写在mounted生命周期里都访问不到
5.什么是多个组件共享状态
多个视图依赖于同一状态。
来自不同视图的行为需要变更同一状态。