跳到主内容

React进阶面试题

本文总结了大厂常见的 React 相关面试题,包括什么是 React 同构,renderToString 和 renderToStaticMarkup 的区别等。

什么是同构?

通常是启动一个 node 服务,拦截客户端请求的路径,匹配到相应的容器组件,获取需要渲染的数据,通过 propscontextstore 等方式传入到组件,通过 React 内置的 renderToString() 或者 renderToStaticMarkup() 生产 html 字符串返回到浏览器。浏览器进行渲染后,React 进行节点对比,完成事件绑定和交互等逻辑

同构流程图

renderToString 和 renderToStaticMarkup 的区别

都是 React 官方提供的两个能在服务端把组件渲染成最终的 html 的方法

renderToString

  1. renderToString() 方法生成的 HTML 代码会附加以 data-react-* 前缀的属性,react 在客户端就可以通过 hydrate 来完成绑定相关的事件和交互
  2. 相应的返回的 html 体积相对较大
  3. 适用于需要用户交互的应用

renderToStaticMarkup

  1. renderToStaticMarkup 方法和 renderToString 方法类似,但不会在 React 内部创建以 data- 开头的属性。
  2. 返回的 html 体积相对小
  3. 适用于纯展示页面,不需要用户交互的应用