🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 前言 以下统计一些常见的react面试题自己做的解答,希望能帮助你对这些知识点有一些了解。以下内容适合react入门的同学,大佬请忽略 ## jsx是什么?我们应该怎么写?浏览器是怎么识别它的 备注:要说出jsx的原理,以及带来的限制,为什么只能返回一个元素。加分回答内容:为什么组件名要首字母大写(回答出react怎么区分组件和基本元素就好) 。 ## 在 React 中你可以声明的两种主要组件类型是什么以及使用时怎样在两者间选择? 其实说的是关于 `React.Component` 和函数组件的显示区别的,一般情况下我们缩写的大部分组件都是用受控组件的,其包含整个的组件生命周期,可以控制状态。而函数组件更多的是根据属性返回固定的dom渲染结果,与component相比,其渲染更高效,而且react也提倡我们更多的用函数组件来提高应用的性能。 ## react的生命周期会是什么样的?你建议哪些周期应该写哪些函数 componentWillMount,componentDidMount,componentWillReceiveProps,componentShouldUpdate,componentWillUpdate,componentDidUpdate,componentWillUnmount,componentUnmounted ## 为什么请求数据写在didMount生命周期 ### 原理角度 在15版本,willMount生命周期设置setState不会触发页面重新渲染,而在didMount里会触发渲染。 在16版本,willMount会执行多次,导致请求多次,造成资源浪费;而didMount只执行一次,在did里更安全 ### 产品角度 一般情况下,产品主流体验的部分分为两种。 1 请求有数据和没有数据都可以正常显示,当没有请求数据时,显示页面模板,默认的空数据;当请求到数据之后,进行真实数据渲染。这种适用于页面布局布局,内容版图也固定的。这种比如带数据的固定展示表单布局。 2 页面的内容全部依赖于数据,此时展示假的布局都不可能,此时更希望是加载到数据之后给用户展示,因为基本没有其他内容可供用户查看,这种比如数据列表。 ### 框架角度 希望渲染组件之后请求,框架考虑了其他因素,为了避免渲染之前请求数据导致的副作用,所以建议请求数据写在didMount周期。 ### 开发角度 希望渲染组件之后请求数据,这样避免了其他子组件考虑各种数据为空的情况。