前端相关知识点(面试时遇到的一部分题目)

47 阅读2分钟

vuex相关

父子组件生命周期的过程

image.png 父beforeCreate-->父created-->父beforeMount-->子beforeCreate-->子created-->子beforeMount-->子mounted-->父mounted

父子组件一定是按照这个生命周期吗?

当使用异步组件的时候会产生变化:

  • 父beforeCreate
  • 父created
  • 父beforeMount
  • 父mounted
  • 父beforeUpdate
  • 子beforeCreate
  • 子created
  • 子beforeMount
  • 子mounted
  • 父updated

当子组件更新数据时父子组件触发了那些生命周期?

image.png 父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设置很大不出现在可视区域)

以上这些属性哪些能触发绑定事件?

image.png

image.png

最终结果是当我们点击红框(这里我写了一些样式)的时候只有opcity和absolute能触发点击事件,display和visibility无法触发点击事件

在我们需要不断切换组件的显示与隐藏的时候可以怎么优化性能?

使用v-show代替v-if

如果非要用v-if呢该怎么优化?

假设是这样一个场景:有一个switch开关来控制卡片的显示与隐藏

  • 此时可以用keep-alive组件来包裹卡片

为什么data是一个函数而不是一个对象?

防止多个组件公用一个对象,造成全局污染

除了函数的形式还有什么方法能产生这个效果?

这个目前我也还不知道?(该问题出自腾讯一面试官之口)有知道的小伙伴可以在评论区留个言