React面试题

基本知识

1. 区分Real DOMVirtual DOM

2. 什么是React

  • React Facebook 2011 年开发的前端 JavaScript 库。
  • 它遵循基于组件的方法,有助于构建可重用的UI组件。
  • 它用于开发复杂和交互式的 Web 和移动 UI
  • 尽管它仅在 2015 年开源,但有一个很大的支持社区。

3. React有什么特点? 

React的主要功能如下:  

  1. 它使用虚拟DOM 而不是真正的DOM。 
  2. 它可以用服务器端渲染。
  3. 它遵循单向数据流或数据绑定。

4. 列出React的一些主要优点。

React的一些主要优点是:
  1. 它提高了应用的性能
  2. 可以方便地在客户端和服务器端使用
  3. 由于 JSX,代码的可读性很好
  4. React 很容易与 MeteorAngular 等其他框架集成
  5. 使用React,编写UI测试用例变得非常容易

 5. React有哪些限制? 

React的限制如下:
  1. React 只是一个库,而不是一个完整的框架
  2. 它的库非常庞大,需要时间来理解
  3. 新手程序员可能很难理解
  4. 编码变得复杂,因为它使用内联模板和 JSX

 6. 什么是JSX

  JSX 是JavaScript XML 的简写。是 React 使用的一种文件,它利用 JavaScript 的表现力和类似 HTML 的 模板语法。这使得 HTML 文件非常容易理解。此文件能使应用非常可靠,并能够提高其性能。下面是 JSX的一个例子: 
render() { 
    return ( 
        <div>
            <h1> Hello World from Edureka!! </h1>
         </div> 
    ); 
}

7. 你了解 Virtual DOM 吗?解释一下它的工作原理。

Virtual DOM 是一个轻量级的 JavaScript 对象,它最初只是 real DOM 的副本。它是一个节点树,它将 元素、它们的属性和内容作为对象及其属性。 React 的渲染函数从 React 组件中创建一个节点树。然后 它响应数据模型中的变化来更新该树,该变化是由用户或系统完成的各种动作引起的。 Virtual DOM 工作过程有三个简单的步骤。

1. 每当底层数据发生改变时,整个 UI 都将在 Virtual DOM 描述中重新渲染。

2. 然后计算之前 DOM 表示与新表示的之间的差异。

3. 完成计算后,将只用实际更改的内容更新 real DOM。

8. 为什么浏览器无法读取JSX? 

浏览器只能处理 JavaScript 对象,而不能读取常规 JavaScript 对象中的 JSX。所以为了使浏览器能够读 取 JSX,首先,需要用像 Babel 这样的 JSX 转换器将 JSX 文件转换为 JavaScript 对象,然后再将其传给浏览器。

9.  ES5 相比,React ES6 语法有何不同?

以下语法是 ES5 ES6 中的区别:
1. require 与 import
// ES5
var React = require('react');

//ES6
import React from 'react';

2. export 与 exports

//ES5
module.exports = Component;

//ES6
export default Component;

3. 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>; 
    } 
}

4. 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>; 
    } 
}

5. 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>; 
    } 
}

10. React如何性能优化

  • 充分利用shouldComponentUpdate函数,不过这需要你的组件尽量最小化,如果当前组件数据过于复杂,其实是很难优化的。
  • 给你的DOM遍历上加上唯一的key,注意尽量不要用index,因为如果你新DOM中删了某一个节点, 它会重新排列index,那跟原来同层级一比就都会完全不一样,而重新渲染了,所以最好使用id什么的作key值。
  • 能用const声明的就用const。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值