面试题答案
一键面试- 具体思路:
- 使用Vuex:
- 在Vuex中定义相关的状态,中间层组件和深层嵌套组件都从Vuex中获取状态。当中间层组件状态改变时,通过提交Vuex的mutation来更新状态,由于深层嵌套组件依赖的是Vuex中的状态,所以会自动同步。
- 当深层嵌套组件状态改变时,同样通过提交mutation的方式,将新状态更新到Vuex,这样中间层组件依赖的Vuex状态也会更新,实现了同步回触发源头。
- Provide / Inject:
- 中间层组件通过
provide
提供数据,深层嵌套组件通过inject
注入数据。当中间层组件状态改变时,更新provide
的数据,深层嵌套组件注入的数据也会相应改变。 - 对于深层嵌套组件状态改变同步回中间层组件,可以在
inject
的数据中提供一个回调函数,深层嵌套组件状态改变时调用这个回调函数,中间层组件在回调函数中更新自身状态。
- 中间层组件通过
- 事件总线:
- 创建一个Vue实例作为事件总线。中间层组件状态改变时,通过事件总线发布事件,深层嵌套组件监听该事件并更新自身状态。
- 深层嵌套组件状态改变时,同样通过事件总线发布事件,中间层组件监听该事件,实现状态同步回源头。
- 使用Vuex:
- 可能用到的技术点:
- Vuex:包括state(状态定义)、mutation(状态变更方法)、action(用于异步操作等,间接提交mutation)等概念。
- Provide / Inject:
provide
选项用于向其下方的所有组件树中提供数据,inject
选项用于从祖先组件注入数据。 - 事件总线:利用Vue实例的
$on
(监听事件)和$emit
(触发事件)方法来实现事件的监听和触发。