2022前端开发社招React面试题 附答案

组合极昼
• 阅读 801

2022前端开发社招React面试题 附答案
前端react面试题详细解答

1:讲讲什么是 JSX ?
主题: React 难度: ⭐⭐⭐
当 Facebook 第一次发布 React 时,他们还引入了一种新的 JS 方言 JSX,将原始 HTML 模板嵌入到 JS 代码中。JSX 代码本身不能被浏览器读取,必须使用Babel和webpack等工具将其转换为传统的JS。很多开发人员就能无意识使用 JSX,因为它已经与 React 结合在一直了。
class MyComponent extends React.Component {
render() {

let props = this.props;  
return (
  <div className="my-component">
  <a href={props.url}>{props.name}</a>
  </div>
);

}
}
2:根据下面定义的代码,可以找出存在的两个问题吗 ?
主题: React 难度: ⭐⭐⭐
请看下面的代码:

答案:
1.在构造函数没有将 props 传递给 super,它应该包括以下行
constructor(props) {
super(props);
// ...
}
复制代码
2.事件监听器(通过addEventListener()分配时)的作用域不正确,因为 ES6 不提供自动绑定。因此,开发人员可以在构造函数中重新分配clickHandler来包含正确的绑定:
constructor(props) {
super(props);
this.clickHandler = this.clickHandler.bind(this);
// ...
}
3:为什么不直接更新 state 呢 ?
主题: React 难度: ⭐⭐⭐
如果试图直接更新 state ,则不会重新渲染组件。
// 错误
This.state.message = 'Hello world';
复制代码
需要使用setState()方法来更新 state。它调度对组件state对象的更新。当state改变时,组件通过重新渲染来响应:
// 正确做法
This.setState({message: ‘Hello World’});
4:React 组件生命周期有哪些不同阶段?
主题: React 难度: ⭐⭐⭐
在组件生命周期中有四个不同的阶段:
Initialization:在这个阶段,组件准备设置初始化状态和默认属性。
Mounting:react 组件已经准备好挂载到浏览器 DOM 中。这个阶段包括componentWillMount和componentDidMount生命周期方法。
Updating:在这个阶段,组件以两种方式更新,发送新的 props 和 state 状态。此阶段包括shouldComponentUpdate、componentWillUpdate和componentDidUpdate生命周期方法。
Unmounting:在这个阶段,组件已经不再被需要了,它从浏览器 DOM 中卸载下来。这个阶段包含 componentWillUnmount 生命周期方法。
除以上四个常用生命周期外,还有一个错误处理的阶段:
Error Handling:在这个阶段,不论在渲染的过程中,还是在生命周期方法中或是在任何子组件的构造函数中发生错误,该组件都会被调用。这个阶段包含了 componentDidCatch 生命周期方法。
5:React 的生命周期方法有哪些?
主题: React 难度: ⭐⭐⭐
componentWillMount:在渲染之前执行,用于根组件中的 App 级配置。
componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM 的操作或状态更新以及设置事件监听器。
componentWillReceiveProps:在初始化render的时候不会执行,它会在组件接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染
shouldComponentUpdate:确定是否更新组件。默认情况下,它返回true。如果确定在 state 或 props 更新后组件不需要在重新渲染,则可以返回false,这是一个提高性能的方法。
componentWillUpdate:在shouldComponentUpdate返回 true 确定要更新组件之前件之前执行。
componentDidUpdate:它主要用于更新DOM以响应props或state更改。
componentWillUnmount:它用于取消任何的网络请求,或删除与组件关联的所有事件监听器。
6:这三个点(...)在 React 干嘛用的?
主题: React 难度: ⭐⭐⭐
... 在React(使用JSX)代码中做什么?它叫什么?
<Modal {...this.props} title='Modal heading' animation={false}/>
复制代码
这个叫扩展操作符号或者展开操作符,例如,如果this.props包含a:1和b:2,则
<Modal {...this.props} title='Modal heading' animation={false}>
复制代码
等价于下面内容:
<Modal a={this.props.a} b={this.props.b} title='Modal heading' animation={false}>
复制代码
扩展符号不仅适用于该用例,而且对于创建具有现有对象的大多数(或全部)属性的新对象非常方便,在更新state 咱们就经常这么做:
this.setState(prevState => {

return {foo: {...prevState.foo, a: "updated"}};

});
7.什么是JSX?
JSX 是J avaScript XML 的简写。是 React 使用的一种文件,它利用 JavaScript 的表现力和类似 HTML 的模板语法。这使得 HTML 文件非常容易理解。此文件能使应用非常可靠,并能够提高其性能。下面是JSX的一个例子:
render(){

return(        
    <div>
        <h1> Hello World from Edureka!!</h1>
    </div>
);

}

  1. 为什么浏览器无法读取JSX?
    浏览器只能处理 JavaScript 对象,而不能读取常规 JavaScript 对象中的 JSX。所以为了使浏览器能够读取 JSX,首先,需要用像 Babel 这样的 JSX 转换器将 JSX 文件转换为 JavaScript 对象,然后再将其传给浏览器。
  2. 与 ES5 相比,React 的 ES6 语法有何不同?
    以下语法是 ES5 与 ES6 中的区别:
    require 与 import
    // ES5
    var React = require('react');

// ES6
import React from 'react';
复制代码
export 与 exports
// ES5
module.exports = Component;

// ES6
export default Component;
复制代码
component 和 function
// ES5
var MyComponent = React.createClass({

render: function() {
    return
        <h3>Hello Edureka!</h3>;
}

});

// ES6
class MyComponent extends React.Component {

render() {
    return
        <h3>Hello Edureka!</h3>;
}

}
复制代码
props
// ES5
var App = React.createClass({

propTypes: { name: React.PropTypes.string },
render: function() {
    return
        <h3>Hello, {this.props.name}!</h3>;
}

});

// ES6
class App extends React.Component {

render() {
    return
        <h3>Hello, {this.props.name}!</h3>;
}

}
复制代码
state
// ES5
var App = React.createClass({

getInitialState: function() {
    return { name: 'world' };
},
render: function() {
    return
        <h3>Hello, {this.state.name}!</h3>;
}

});

// ES6
class App extends React.Component {

constructor() {
    super();
    this.state = { name: 'world' };
}
render() {
    return
        <h3>Hello, {this.state.name}!</h3>;
}

}

  1. React与Angular有何不同?
    | 主题 | React | Angular | | ------------- | ------------------ | ------------- | | 1. 体系结构 | 只有 MVC 中的 View | 完整的 MVC | | 2. 渲染 | 可以在服务器端渲染 | 客户端渲染 | | 3. DOM | 使用 virtual DOM | 使用 real DOM | | 4. 数据绑定 | 单向数据绑定 | 双向数据绑定 | | 5. 调试 | 编译时调试 | 运行时调试 | | 6. 作者 | Facebook | Google |
点赞
收藏
评论区
推荐文章
2022年最新iOS面试题(附答案)
最近大家都要准备去面试或者已经在面试的,这里我给大家准备了挺多资料,可以私信我拿,看看了解下。底下就是我整理出来的一些面试题iOS类(class)和结构体(struct)有什么区别?Swift中,类是引用类型,结构体是值类型。值类型在传递和赋值时将进行复制,而引用类型则只会使用引用对象的一个"指向"。所以他们两者之间的区别就是两个类型的区别。举个简单的
胡哥有话说 胡哥有话说
4年前
关于面试题:[1, 2, 3].map(parseInt)问题的剖析
一、前言最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?!1,2,3.map(parseInt)//1,NaN,NaN如果你答案你都明白,请出门左转:React源码/原理了解一下。二、剖析这道面试题,本身并不复杂。不能正确回答问题的小伙
可莉 可莉
4年前
2020阿里,字节跳动,JAVA岗(一线企业校招、社招)面试题合集
前言以下面试题全属于一线大厂社招以及校招的面试真题,各位在做这些题目对照自己的时候请平凡心对待,不要信心受挫。其实做为致力于一线企业校招或者社招的你来说,能把每个知识模块的一小部分问题去深入学习和总结,已经很棒了!然后文末有我自己总结的一些答案和更多面试题的文档总结,需要可以自取!首先展示一下以下文档包含的路线图!(https://
Stella981 Stella981
4年前
2020阿里,字节跳动,JAVA岗(一线企业校招、社招)面试题合集
前言以下面试题全属于一线大厂社招以及校招的面试真题,各位在做这些题目对照自己的时候请平凡心对待,不要信心受挫。其实做为致力于一线企业校招或者社招的你来说,能把每个知识模块的一小部分问题去深入学习和总结,已经很棒了!然后文末有我自己总结的一些答案和更多面试题的文档总结,需要可以自取!首先展示一下以下文档包含的路线图!(https://
Stella981 Stella981
4年前
280页《前端校招面试真题解析大全》
!(https://uploadimages.jianshu.io/upload_images/249447245020b7a80cad7e36.png?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)前言前端校招面试题主要内容包括html,css,JavaScript,ES6,
组合极昼
组合极昼
Lv1
一叫一回肠一断,三春三月忆三巴。
文章
2
粉丝
0
获赞
0