顺丰二面

90 阅读3分钟

1.为什么要自定义hook,遵循的原则是什么,怎么自定义hook

  • 主要为了复用逻辑
  • 自定义的hook要以use开头
  • 自定义hook内部可以使用react的hook

juejin.cn/post/712307…

2.HOC是什么,它和自定义hook有什么区别

  • 高阶组件本质是一个函数,它接收一个组件,在其内部进行一些逻辑处理后,重新返回一个新的组件
  • 它和自定义hook在某些时候是可以实现相同的功能的,因为它们的本质都是处理一些可复用的逻辑,但是两者也有不同的适用场景
    • 当复用的逻辑内容是非定制化的,这时候推荐使用hoc,例如给传入的组件都加上相同的样式
    • 当复用逻辑之外存在一些定制化配置,以及需要对自定义hook生成的值进行额外的处理,那么比较推荐自定义hook

juejin.cn/post/720262…

3.webpack优化做过哪些,你说的图片转base64,图片的大小范围是多少

  • 图片大小最好是小几十k。图片大的话,生成的字符会特别长,其大小可能会比图片本身的大小更大

4.你用的是webpack几,其中的tree shaking怎么配置

5.路由的懒加载是什么,为什么路由表配置要使用import来引入组件

  • 由于react是单页面应用,加载的时候会加载一个包含全部打包代码的bundle,如果bundle大的话页面就会渲染的慢一些
  • 那么使用懒加载的话可以将需要加载的内容在需要的时候打包成chunk,然后再加载进来
  • 首先需要使用React.lazy函数,内部使用import引入组件
  • 之后使用React.Suspense组件来包裹上面函数返回,这个s组件有一个fallback参数,它会在组件加载完成之前显示,例如loading...

www.bilibili.com/video/BV1vg…

6.react的hook使用原则是什么?在if中写useEffect可以吗,为什么

  • 不要在if、for里面写hook
  • 可以在函数组件中使用,也可以在自定义hook中使用
  • 如果在判断语句中使用了hook,会导致hook的时序出现错误。以state举例,第一次调用useState,都会在stateQueue这个有序表中添加对应state值。当setState的时候会更新对应位置上的值,同时触发rerender。重渲染再走到useState的时候,会从有序表中找出对应位置的值赋给对应的state。但是当在条件语句中执行state,就充满了不确定性。那么有序表就会出现错乱

blog.csdn.net/m0_65121454… juejin.cn/post/690749…

7.useState和useEffect和闭包的关系是什么

8.浏览器的缓存机制了解过吗,怎么查看资源命中了哪种缓存

9.路由有哪几种形式,history的实现原理是什么。如果采用history,在页面里跳转路由会向后端发送请求吗

反问,如何进行性能优化

  • 根据版本号,对核心库进行强缓存
  • 请求资源的时候定义好文件的大小,防止阻塞渲染
  • 配置cdn分发
  • 引入第三方库的时候不要全引,只引入其中需要的模块