欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

react

程序员文章站 2022-07-02 23:42:50
...

react面试问题

学习页面链接

基本知识

1. 区分Real DOM和Virtual DOM

react

2. React有什么特点?

React的主要功能如下:

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

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

React的一些主要优点是:

  1. 它提高了应用的性能
  2. 可以方便地在客户端和服务器端使用
  3. 由于 JSX,代码的可读性很好
  4. React 很容易与 Meteor,Angular等其他框架集成
  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>
    );
}

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

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

10. React与Angular有何不同?

react

12. 解释 React 中 render() 的目的。

每个React组件强制要求必须有一个 render()。它返回一个 React 元素,是原生 DOM 组件的表示。如果需要渲染多个 HTML 元素,则必须将它们组合在一个封闭标记内,例如 、、

等。此函数必须保持纯净,即必须每次调用时都返回相同的结果。

13. 如何将两个或多个组件嵌入到一个组件中?

可以通过以下方式将组件嵌入到一个组件中:

class MyComponent extends React.Component{
    render(){
        return(          
            <div>
                <h1>Hello</h1>
                <Header/>
            </div>
        );
    }
}
class Header extends React.Component{
    render(){
        return
            <h1>Header Component</h1>   
   };
}
ReactDOM.render(
    <MyComponent/>, document.getElementById('content')
);

14. 什么是 Props?

Props 是 React 中属性的简写。它们是只读组件,必须保持纯,即不可变。它们总是在整个应用中从父组件传递到子组件。子组件永远不能将 prop 送回父组件。这有助于维护单向数据流,通常用于呈现动态生成的数据。

16. 区分状态和 props

react

17. 如何更新组件的状态?

可以用 this.setState()更新组件的状态。

19. 区分有状态和无状态组件。

//无状态组建
const Header=(props)=>{
	return (
		<div></div>
	)
}
export default Header

react

20. React组件生命周期的阶段是什么?

React 组件的生命周期有三个不同的阶段:

  • 初始渲染阶段:这是组件即将开始其生命之旅并进入 DOM 的阶段。
  • 更新阶段:一旦组件被添加到 DOM,它只有在 prop或状态发生变化时才可能更新和重新渲染。这些只发生在这个阶段。
  • 卸载阶段:这是组件生命周期的最后阶段,组件被销毁并从 DOM 中删除。

21. 详细解释 React 组件的生命周期方法。

一些最重要的生命周期方法是:

  • componentWillMount****() – 在渲染之前执行,在客户端和服务器端都会执行。
  • componentDidMount****() – 仅在第一次渲染后在客户端执行。
  • componentWillReceiveProps****() – 当从父类接收到 props 并且在调用另一个渲染器之前调用。
  • shouldComponentUpdate*****() – 根据特定条件返回 true 或
    false。如果你希望更新组件,请返回true* 否则返回 false。默认情况下,它返回 false。
  • componentWillUpdate****() – 在 DOM 中进行渲染之前调用。
  • componentDidUpdate****() – 在渲染发生后立即调用。
  • componentWillUnmount****() – 从 DOM 卸载组件后调用。用于清理内存空间。

22. React中的事件是什么?

在 React 中,事件是对鼠标悬停、鼠标单击、按键等特定操作的触发反应。处理这些事件类似于处理 DOM 元素中的事件。但是有一些语法差异,如:

  • 用驼峰命名法对事件命名而不是仅使用小写字母。
  • 事件作为函数而不是字符串传递。

事件参数重包含一组特定于事件的属性。每个事件类型都包含自己的属性和行为,只能通过其事件处理程序访问。

class Display extends React.Component({    
    show(evt) {
        // code   
    },   
    render() {      
        // Render the div with an onClick prop (value is a function)        
        return (            
            <div onClick={this.show}>Click Me!</div>
        );    
    }
});

24. React中的合成事件是什么?

合成事件是围绕浏览器原生事件充当跨浏览器包装器的对象。它们将不同浏览器的行为合并为一个 API。这样做是为了确保事件在不同浏览器中显示一致的属性。

25. 你对 React 的 refs 有什么了解?

Refs 是 React 中引用的简写。
它是一个有助于存储对特定的 React 元素或组件的引用的属性,
将由组件渲染配置函数返回。用于对 render() 返回的特定元素或组件的引用。当需要进行 DOM 测量或向组件添加方法时,它们会派上用场。

class ReferenceDemo extends React.Component{
     display() {
         const name = this.inputDemo.value;
         document.getElementById('disp').innerHTML = name;
     }
render() {
    return(        
          <div>
            Name: <input type="text" ref={input => this.inputDemo = input} />
            <button name="Click" onClick={this.display}>Click</button>            
            <h2>Hello <span id="disp"></span> !!!</h2>
          </div>
    );
   }
 }

26. 列出一些应该使用 Refs 的情况。

以下是应该使用 refs 的情况:

  • 需要管理焦点、选择文本或媒体播放时
  • 触发式动画
  • 与第三方 DOM 库集成

Flux

是一种强制单向数据流的架构模式。
它控制派生数据,并使用具有所有数据权限的中心 store 实现多个组件之间的通信。整个应用中的数据更新必须只能在此处进行。
Flux 为应用提供稳定性并减少运行时的错误

36. 什么是Redux?

Redux 是当今最热门的前端开发库之一。
它是 JavaScript 程序的可预测状态容器,用于整个应用的状态管理。使用 Redux 开发的应用易于测试,可以在不同环境中运行,并显示一致的行为。

37. Redux遵循的三个原则是什么?

  • 单一事实来源:整个应用的状态存储在单个 store 中的对象/状态树里。单一状态树可以更容易地跟踪随时间的变化,并调试或检查应用程序。
  • 状态是只读的:改变状态的唯一方法是去触发一个动作。动作是描述变化的普通 JS 对象。就像 state 是数据的最小表示一样,该操作是对数据更改的最小表示。
  • 使用纯函数进行更改:为了指定状态树如何通过操作进行转换,你需要纯函数。纯函数是那些返回值仅取决于其参数值的函数。

38. 你对“单一事实来源”有什么理解?

Redux 使用 “Store” 将程序的整个状态存储在同一个地方。因此所有组件的状态都存储在 Store 中,并且它们从 Store 本身接收更新。单一状态树可以更容易地跟踪随时间的变化,并调试或检查程序。

39. 列出 Redux 的组件。

Redux 由以下组件组成:

  • Action – 这是一个用来描述发生了什么事情的对象。
  • Reducer – 这是一个确定状态将如何变化的地方。
  • Store – 整个程序的状态/对象树保存在Store中。
  • View – 只显示 Store 提供的数据。

React 路由

46. 什么是React 路由?

React 路由是一个构建在 React 之上的强大的路由库,它有助于向应用程序添加新的屏幕和流。这使 URL 与网页上显示的数据保持同步。它负责维护标准化的结构和行为,并用于开发单页 Web 应用。 React 路由有一个简单的API。

47. 为什么React Router v4中使用 switch 关键字 ?

虽然

** 用于封装 Router 中的多个路由,当你想要仅显示要在多个定义的路线中呈现的单个路线时,可以使用 “switch” 关键字。使用时,** 标记会按顺序将已定义的 URL 与已定义的路由进行匹配。找到第一个匹配项后,它将渲染指定的路径。从而绕过其它路线。

48. 为什么需要 React 中的路由?

Router 用于定义多个路由,当用户定义特定的 URL 时,如果此 URL 与 Router 内定义的任何 “路由” 的路径匹配,则用户将重定向到该特定路由。所以基本上我们需要在自己的应用中添加一个 Router 库,允许创建多个路由,每个路由都会向我们提供一个独特的视图

<switch>
    <route exact path=’/’ component={Home}/>
    <route path=’/posts/:id’ component={Newpost}/>
    <route path=’/posts’   component={Post}/>
</switch>

49. 列出 React Router 的优点。

几个优点是:

  • 就像 React 基于组件一样,在 React Router v4 中,API 是 ‘All About Components’。可以将 Router 可视化为单个根组件(),其中我们将特定的子路由()包起来。
  • 无需手动设置历史值:在 React Router v4 中,我们要做的就是将路由包装在 组件中。
  • 包是分开的:共有三个包,分别用于 Web、Native 和 Core。这使我们应用更加紧凑。基于类似的编码风格很容易进行切换。

50. React Router与常规路由有何不同?

react

相关标签: react