我正在参与掘金创作者训练营第5期, 点击了解活动详情
Vue3
说说Vue3的生命周期?
- beforeCreate:空的Vue实例创建完成;
- created:Vue实例初始化完成,响应式绑定完成;
- beforeMount:模板编译完成;
- mounted:DOM渲染完成,组件创建完成;
- beforeUpdate(多次):响应式数据改变;
- updated(多次):DOM更新完成;
- beforeUnmount:全局事件自定义事件等解绑完成(避免内存泄漏);
- unmounted:组件销毁完成;
Vue3何时可以操作DOM?
mounted和updated不能保证子组件全部挂载完成。
在mounted中,使用$nextTick来渲染DOM;
computed和watch有什么区别?
- computed:用于计算产生新数据,有缓存;
- watch:监听现有数据;
watch和watchEffect有什么区别?
- watch:需要明确被监听的属性;
- watchEffect:自动监听属性变化;
Vue3组件间如何通信?
- props与$emit
- 适用范围:父子组件间通信;
- 使用方式:父传子用属性
props
,子传父用事件$emit
;
- 自定义事件
- 适用范围:无关组件间通信;
- 使用方式:Vue3中使用第三方库;
- $attrs
- 适用范围:上级组件向下级组件通信;
- 使用方式:保存
props
与$emit
没有接住的上级属性和方法,多级传递依赖v-bind
;
- $parent
- 适用范围:父组件向子组件通信;
- 使用方式:在
mounted
中使用(等待渲染),获取父组件中的属性和方法;
- $refs
- 适用范围:子组件向父组件通信;
- 使用方式:在
mounted
中使用(等待渲染),获取子组件中的属性和方法;
- provide与inject
- 适用范围:多层级组件间通信;
- 使用方式:
- 上级组件在
provide
函数中返回一个包裹数据的对象,响应式数据要使用computed
包裹; - 下级组件在
inject
中通过key值获取对象中的数据;
- 上级组件在
- Vuex
- 适用范围:全局组件间通信;
Vuex中action与mutation有什么区别?
- mutation:原子操作,同步;
- action:合并原子操作,异步;
Vue-router有哪些模式?
- Hash;
- WebHistory;
- MemoryHistory;
Vue3各个模块间关系是怎样的?
Vue3的编译时与运行时相互独立,可分别使用。