vuex相关
父子组件生命周期的过程
父beforeCreate-->父created-->父beforeMount-->子beforeCreate-->子created-->子beforeMount-->子mounted-->父mounted
父子组件一定是按照这个生命周期吗?
当使用异步组件的时候会产生变化:
- 父beforeCreate
- 父created
- 父beforeMount
- 父mounted
- 父beforeUpdate
- 子beforeCreate
- 子created
- 子beforeMount
- 子mounted
- 父updated
当子组件更新数据时父子组件触发了那些生命周期?
父beforeUpdate-->子beforeCreate-->子created-->子beforeMount-->子beforeDestroy-->子destroyed-->子mounted-->父updated
在子组件上加一个v-if呢?生命周期是怎么样的
显示:
- 父beforeUpdate
- 子beforeCreate
- 子created
- 子beforeMount
- 子mounted
- 父updated 隐藏:
- 父beforeUpdate
- 子beforeDestroy
- 子destroyed
- 父updated
v-show和v-if的区别
v-show主要是用了css的display:none这个属性 v-if是销毁创建dom,性能消耗更大
引伸
css还有什么方式能隐藏元素?
- display:none;
- visibility: hidden;
- opcity:0;
- position: absolute;(将元素的left或者top设置很大不出现在可视区域)
以上这些属性哪些能触发绑定事件?
最终结果是当我们点击红框(这里我写了一些样式)的时候只有opcity和absolute能触发点击事件,display和visibility无法触发点击事件
在我们需要不断切换组件的显示与隐藏的时候可以怎么优化性能?
使用v-show代替v-if
如果非要用v-if呢该怎么优化?
假设是这样一个场景:有一个switch开关来控制卡片的显示与隐藏
- 此时可以用keep-alive组件来包裹卡片
为什么data是一个函数而不是一个对象?
防止多个组件公用一个对象,造成全局污染
除了函数的形式还有什么方法能产生这个效果?
这个目前我也还不知道?(该问题出自腾讯一面试官之口)有知道的小伙伴可以在评论区留个言