关于react.js:2022前端开发社招React面试题-附答案
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 => { ...