ag百家乐开奖
热点资讯
ag百家乐接口多少钱 前端 React 50个基础高频口试题,助你放浪拿 offer
发布日期:2024-03-01 19:01 点击次数:173
本文汇总了前端口试中平凡问到的 `React 基础高频`口试题ag百家乐接口多少钱,口试常问的基本王人在这里。
## 1、什么是React?
用于构建用户界面的 JavaScript 库,提供了 UI 层面的管制决策,遵从组件设想模式、声明式编程范式和函数式编程倡导,以使前端应用按次更高效,使用诬捏DOM来有用地操作DOM,遵从从高阶组件到低阶组件的单向数据流,匡助咱们将界面成了各个孤独的小块,每一个块即是组件,这些组件之间不错组合、嵌套,组成举座页面.
## 2、React有什么特色?
- 1.它使用诬捏DOM 而不是真确的DOM。
- 2.它不错进行服务器端渲染。
- 3.它遵从单向数据流或数据绑定。
- 4.JSX语法
- 5.声明式编程
- 6.Component(组件化)
## 3、列出React的一些主要优点。
- 1、组件式拓荒,普及代码复用率
- 2、不错约略地在客户端和服务器端使用
- 3、由于 JSX,代码的可读性很好
- 4、React 很容易与 Meteor,Angular 等其他框架集成
- 5、使用React,编写UI测试用例变得相配容易
- 6、单向反馈的数据流会比双向绑定的更安全,速率更快
## 4、React有哪些旁边?
- 1、React 仅仅一个库,而不是一个齐全的框架
- 2、它的库相配巨大,需要技巧来意会
- 3、生手按次员可能很难意会
- 4、编码变得复杂,因为它使用内联模板和 JSX
## 5、什么是JSX?
JSX 是JavaScript XML 的简写。是 React 使用的一种文献,它期骗 JavaScript 的证据力和近似 HTML 的模板语法。这使得 HTML 文献相配容易意会。此文献能使应用相配可靠,并八成普及其性能(说白了即是不错在 js 中写 html)。
## 6、为什么浏览器无法读取JSX?
浏览器只可处理 JavaScript 对象,而不可读取惯例 JavaScript 对象中的 JSX。是以为了使浏览器八成读取 JSX,最初,需要用像 Babel 这么的 JSX 鼎新器将 JSX 文献鼎新为 JavaScript 对象,然后再将其传给浏览器。
## 7、React中的组件是什么?
组件是React应用的构建块。它们是孤独且可重用的代码片断,用于界说UI的一部分。组件不错是类组件或函数组件,而况不错咨嗟我方的情景和人命周期。
## 8、怎样诠释 React 中 render() 的辩论。
每个React组件强制要求必须有一个 render()。它复返一个 React 元素,是原生 DOM 组件的示意。如果需要渲染多个 HTML 元素,则必须将它们组合在一个顽固标志内,举例 `、、
` 等。此函数必须保执结义,即必须每次调用时王人复返调换的终结。
## 9、什么是 Props?
Props 是 React 中属性的简写。它们是只读组件,必须保执纯,即不可变。它们老是在通盘应用中从父组件传递到子组件。子组件恒久不可将 prop 送回父组件。这有助于咨嗟单向数据流,平凡用于呈现动态生成的数据。
## 10、React中的情景是什么?它是如何使用的?
情景是 React 组件的中枢,是数据的源泉,必须尽可能约略。基本上情景是细目组件呈现和举止的对象。与props 不同,它们是可变的,并创建动态和交互式组件。不错通过 this.state() 访谒它们。
## 11、 React 中的箭头函数是什么?使用箭头函数的克己?
箭头函数(=>)是用于编写函数抒发式的简陋语法。这些函数允许正确绑定组件的高下文,因为在 ES6 中默许下不可使用自动绑定。使用高阶函数时,箭头函数相配有用。
克己:
- (1)语法纯粹:箭头函数的语法比传统的函数声明或函数抒发式更纯粹。
- (2)不绑定 this:箭头函数不会创建我方的 this 值。在箭头函数里面,this 与顽固 词法环境的 this 值调换。这管制了在事件处理器和回调函数中使用 this 的问题。
- (3)不绑定 arguments:箭头函数不会创建我方的 arguments 对象。它会从顽固 的词法环境中获得 arguments。
- (4)不不错行动构造函数:箭头函数不可用作构造函数,不可使用 new 关键字。
莫得 prototype 属性:由于箭头函数不可用作构造函数,是以它也莫得 prototype 属性。
- (5)不扶植 yield 关键字:箭头函数不可用作生成器函数。
总的来说,箭头函数提供了一种更纯粹、更约略的函数语法,至极合乎用于那些需要匿名函数的场景。
## 12、什么是高阶组件(HOC)?
高阶组件是重用组件逻辑的高等方法,是一种源于 React 的组件模式。 HOC 是自界说组件,在它之内包含另一个组件。它们不错接受子组件提供的任何动态,但不会修改或复制其输入组件中的任何举止。你不错以为 HOC 是“纯(Pure)”组件。
## 13、你能用HOC作念什么?
- 1、代码重用,逻辑和指点概括
- 2、渲染劫执
- 3、情景概括和旁边
- 4、Props 旁边
## 14、什么是纯组件?
纯(Pure) 组件是不错编写的最约略、最快的组件。它们不错替换任何唯有 render() 的组件。这些组件增强了代码的约略性和应用的性能。
##15、React 中 key 的首要性是什么?
key 用于识别独一的 Virtual DOM 元素过甚驱动 UI 的相应数据。它们通过回收 DOM 中面前悉数的元素来匡助 React 优化渲染。这些 key 必须是独一的数字或字符串,列表元素需要一个独一的key来匡助React识别哪些项仍是改变、添加或删除。这普及了渲染列表的性能,尤其是在进行列表项的重新排序或操作时。
## 16、什么是React 路由?
React 路由是一个构建在 React 之上的强劲的路由库,它有助于向应用按次添加新的屏幕和流。这使 URL 与网页上自大的数据保执同步。它谨慎咨嗟范例化的结构和举止,并用于拓荒单页 Web 应用。 React 路由有一个约略的API。
## 17、为什么 useState 复返的是数组而不是对象?
因为解构赋值的原因:
- 复返数组,不错对数组中的变量定名,代码看起来也比较干净。
- 复返对象,那就必须和复返的值同名,不可重叠使用了。
## 18、如何 已毕 React 懒加载?
React 16.6 之后,React 提供了 React.lazy 方法来扶植组件的懒加载。互助 webpack 的 code-splitting 性格,不错已毕按需加载。
```
import React, { Suspense } from 'react';
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<Suspense fallback={
Loading...
}>
);
}
```
## 19、React VS Vue 有何辞别
> 0、设想理念
>
>- `React`: 更倾向于函数式编程念念想,宝贵组件的不可变性和单向数据流。
>- `Vue`: 纠合了反馈式编程和模板系统,用功于简化拓荒过程。
> 1、组件化款式不同
>
> - React 组件包含情景和举止,悉数组件分享一个情景树
> - Vue 每个组件王人有我方的情景和举止,而况不错很容易将数据和举止绑定在一齐
> 2、数据驱动款式不同
>
> - React 主要收受单向数据流,组件情景通过setState方法更新
> - Vue 扶植双向数据绑定(使用v-model指示),合乎于简化表单输入等场景。
> 3、模板语法不同
>
> - React 使用JSX(JavaScript XML),将标志话语与JavaScript逻辑混写。
> - Vue 使用基于HTML的模板语法,允许拓荒者使用纯HTML、CSS和JavaScript,扶植指示
> 4、人命周期不同
>
> - React 人命周期:开动化、更新、卸载
> - Vue 人命周期:创建、挂载、更新、就义
> 5、情景管制款式不同
>
> - React 情景管制平凡通过使用Context API或引入如Redux、MobX的库来已毕。
> - Vue 提供了Vuex作为官方的情景管意会决决策。
> 6、性能优化款式不同
>
> - React 性能优化:React.memo、shouldComponentUpdate
> - Vue 性能优化:keep-alive、v-if
> 7、反馈式系统
>
> - React: 通过setState和useState等API显式地触发UI更新。
> - Vue: 通过其反馈式系统自动跟踪依赖并在数据变化时更新视图。
> 8、类型扶植
>
> - React: 原生扶植JavaScript,但不错很好地与TypeScript纠合。
> - Vue: Vue 3提供了更好的TypeScript扶植。
## 20、React 组件获胜如何通讯
父组件 => 子组件:
- 1、Props
- 2、ref
子组件 => 父组件:
- 1、回调函数
- 2、事件冒泡机制
- 3、使用 useImperativeHandle 和 forwardRef,另一种方法是使用React的useImperativeHandle Hook 和 forwardRef 高阶组件。
伯仲组件之间:
- 1、期骗父组件通讯
不关系的组件之间:
- 1、Context
- 2、全局变量
- 3、 不雅察者模式
- 4、Redux/mobx/dva等
## 21、什么是 useReducer
useReducer 是 React Hooks 中的一个函数,用于管制和更新组件的情景。它不错被视为 useState 的一种替代决策,适用于处理更复杂的情景逻辑。比较于 useState,useReducer 在处理复杂情景逻辑时更有上风,因为它允许咱们将情景更新的逻辑封装在 reducer 函数中,并字据不同的动作类型实施相应的逻辑。这么不错使代码更具可读性和可咨嗟性,而况更容易进功绩态跟踪和调试。
## 22、React类式组件和函数式组件的辞别有哪些呢?
1、语法不同、设想念念想不同
函数式组件是函数式编程念念想,而类组件是面向对象编程念念想。面向对象编程将属性和方法封装起来,屏蔽许多细节,不利于测试。
2、人命周期、情景变量
- 类式组件:使用state对象界说情景变量,有诸如componmentDidMount、shouldComponentUpdate等人命周期钩子函数;
- 函数式组件:莫得this,使用一系列的内置hooks已毕对应的功能,比如使用useState创建情景变量,使用useEffect已毕近似于componmentDidMount、shouldComponentUpdate等人命周期钩子函数的功能。
3、复用性
- 类式组件:使用hoc(高阶组件)、render props已毕组件的逻辑复用、拓展组件的功能。
- 函数式组件:使用自界说hooks已毕组件的逻辑复用。
`端庄`:
- 幸免在 轮回/要求判断/嵌套函数 中调用 hooks,保证调用规定的牢固;
- 不可在 useEffect 中使用 useState,React 会报错领导;
- 类组件不会被替换或烧毁,不需要强制立异类组件,两种款式能并存
## 23、setState 是同步照旧异步?
`react 18 之前`
- 在Promise的情景更新、js原滋事件、setTimeout、setInterval..中是同步的。
- 在react的合成事件中,是异步的。
> setState的“异步”并不是说里面由异步代码已毕,其实自身实施的过程和代码王人是同步的,仅仅合成事件和钩子函数的调用规定在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,神气了所谓的“异步”,诚然不错通过第二个参数 setState(partialState, callback) 中的callback拿到更新后的终结。
`react 18 之后`
setState王人会证据为异步(即批处理)。
## 24、 React 服务端渲染(SSR)旨趣?
1、node server 接收客户端肯求,得到面前的肯求 url 旅途,然后在已有的路由表内查找到对应的组件,拿到需要肯求的数据,将数据作为 props、context或者store 神气传入组件
2、然后基于 react 内置的服务端渲染方法 renderToString() 把组件渲染为 html 字符串在把最终的 html 进行输出前需要将数据注入到浏览器端
3、浏览器脱手进行渲染和节点对比,然后实施完成组件内事件绑定和一些交互,浏览器重用了服务端输出的 html 节点,通盘过程收尾
## 25、常用的 React Hooks
- `情景钩子 (useState)`: 用于界说组件的 State,近似类界说中 this.state 的功能
- `useReducer`:用于管制复杂情景逻辑的替代决策,近似于 Redux 的 reducer。
- `人命周期钩子 (useEffect)`: 类界说中有许多人命周期函数,而在 React Hooks 中也提供了一个相应的函数 (useEffect),这里不错看作念- componentDidMount、componentDidUpdate和componentWillUnmount的纠合。
- `useLayoutEffect`:与 useEffect 近似,但在浏览器完成绘图之前同步实施。
- `useContext`: 获得 context 对象,用于在组件树中获得和使用分享的高下文。
- `useCallback`: 缓存回调函数,幸免传入的回调每次王人是新的函数实例而导致依赖组件重新渲染,具有性能优化的成果;
- `useMemo`: 用于缓存传入的 props,ag百家乐开奖幸免依赖的组件每次王人重新渲染;
- `useRef`: 获得组件的实在节点;用于在函数组件之间保存可变的值,而况不会激勉重新渲染。
- `useImperativeHandle`:用于自界说裸露给父组件的实例值或方法。
- `useDebugValue`:用于在拓荒者器用中自大自界说的钩子关系标签。
## 26、useEffect VS useLayoutEffect
`useEffect` 在 React 的渲染过程中是被异顺序用的,用于绝大无数场景;
`useLayoutEffect` 会在悉数的 DOM 变更之后同顺序用,主要用于处理 DOM 操作、支持神情、幸免页面闪耀等问题。
也正因为是同步处理,是以需要幸免在 useLayoutEffect 作念谋略量较大的耗时任务从而变成阻扰。
`useEffect` 是按照规定实施代码的,改变屏幕像素之后实施(先渲染,后改变DOM),当改变屏幕内容时可能会产生闪耀;
`useLayoutEffect` 是改变屏幕像素之前就实施了(会推迟页面自大的事件,先改变DOM后渲染),不会产生闪耀。useLayoutEffect老是比useEffect先实施。
## 27、React中的state和props的辞别
- `state`是组件里面的情景,不错被组件自身管制和更动。
- `props(属性)`是从父组件传递给子组件的数据,子组件不可修改接收到的props(单向数据流)。
调换点:
- 两者王人是 JavaScript 对象
- 两者王人是用于保存信息
- props 和 state 王人能触发渲染更新
辞别:
- props 是外部传递给组件的,而 state 是在组件内被组件我方管制的,一般在 constructor 中开动化
- props 在组件里面是不可修改的,但 state 在组件里面不错进行修改
- state 是多变的、不错修改
## 28、React中的诬捏DOM是什么
诬捏DOM是内存中的DOM示意。React使用诬捏DOM来优化DOM的更新过程。它通过比较新旧诬捏DOM的各别,并仅更新实践DOM中改变的部分,普及应用性能。
## 29、React 的人命周期方法有哪些 ?
- 1 `componentWillMount`:在渲染之前实施,用于根组件中的 App 级确立。
- 2 `componentDidMount`:在第一次渲染之后实施不错在这里作念AJAX肯求,DOM 的操作或情景更新以及建造事件监听器。
- 3 `componentWillReceiveProps`:在开动代render的时候不会实施,它会在组件接受到新的情景(Props)时被触发,一般用于业组件情景更新时子组件的重新渲染。
- 4 `shouldComponentUpdate`:细目是否更新组件。默许情况下,它复返true。如果细目在 state 或props 更新后组件不需要在重新渲染,则不错复返false,这是一个普及性能的方法。
- 5 `componentWillUpdate`:在shouldComponentUpdate复返 true 细目要更新组件之前实施。
- 6 `componentDidUpdate`:它主要用于更新DOM以反馈props或state更动。
- 7 `componentWillUnmount`:它用于取消任何的蚁合肯求,或删除与组件关联的悉数事件监听器。
## 30、为什么使用 React Hooks
Hooks 平凡扶植提真金不怕火和重用跨多个组件通用的有情景逻辑,而无需承担高阶组件或渲染 props 的处事。
Hooks 不错放浪地操作函数组件的情景,而不需要将它们鼎新为类组件。
幸免使用人命周期方法。
## 31、父子组件的useEffec哪个先实施?
先实施子组件再实施父组件。react保证了每次运行useffect的同期,DOM王人仍是更新结束。有一些场景,需要父组件的实施规定在子组件前边,不错推敲一下使用useLayoutEffect
## 32、什么是 Virtual DOM
- 1、Virtual Dom,实践上是以 JavaScript 对象神气存在的对 DOM 的形色。创建诬捏DOM辩论即是为了更好将诬捏的节点渲染到页面视图中,诬捏DOM对象的节点与实在DOM的属性逐个照料
- 2、更新更快
- 3、无法获胜更新 HTML
- 4、如果元素更新,则更新 JSX
- 5、DOM 操作相配约略
- 6、很少的内存破坏
## 33、Virtual DOM 处事过程有三个约略的要领:
- 1、每当底层数据发生改变时,通盘 UI 王人将在 Virtual DOM 形色中重新渲染。
- 2、然后谋略之前 DOM 示意与新示意的之间的各别。
- 3、完成谋略后,将只用实践更动的内容更新 real DOM。
## 34、受控组件和非受控组件的辞别
`受控组件`是React旁边的组件,input等表单输入框值不存在于 DOM 中,而是以咱们的组件情景存在。每当咱们想要更新值时,咱们就像往日一样调用setState。
`不受旁边组件`是您的表单数据由 DOM 处理,而不是React 组件,Refs 用于获得其面前值;
## 35、React 18 有哪些更新
- 并发模式
- 更新 render API
- 自动批处理
- Suspense 扶植 SSR
- startTransition
- useTransition
- useDeferredValue
- useId
- 提供给第三方库的 Hook
## 36、React事件机制和原生DOM事件流有什么辞别?
- react中的事件是绑定到document上头的,
- 而原生的事件是绑定到dom上头的,
- 因此相对绑定的方位来说,dom上的事件要优先于document上的事件实施
## 37、Redux 处事旨趣
Redux 是 React 的第三方情景管制库,创建于高下文API存在之前。它基于一个称为存储的情景容器的倡导,组件不错从该容器中作为 props 接收数据。更新存储区的独一方法是向存储区发送一个操作,该操作被传递到一个reducer中。reducer接收操作和面前情景,并复返一个新情景,触发订阅的组件重新渲染。
## 38、React-Router处事旨趣?react-router-dom有哪些组件
- 路由器组件,路由匹配组件,导航组件
- react-router 的依赖库history
- 1、BrowserHistory:用于扶植 HTML5 历史纪录 API 的当代 Web 浏览器(请参阅跨浏览器兼容性)
- 2、HashHistory:用于旧版Web浏览器\
- 3、MemoryHistory:用作参考已毕,也可用于非 DOM 环境,如 React Native 或测试
- BrowserHistory:pushState、replaceState
- HashHistory:location.hash、location.replace
## 39、React 如何作念到和 vue 中 keep-alive 的缓存成果
React Keep Alive 提供了 ,你必须把 放在 Provider 里面,而况每个 组件王人必须领有一个独一的 key
## 40、React 有哪几种创建组件的方法
React 有三种构建组件的款式
- 1、React.createClass
- 2、ES6 class
- 3、无情景函数
## 41、React diff 旨趣
- 把树形结构按照层级剖析,只比较同级元素。
- 列表结构的每个单位添加独一的 key 属性,约略比较。
- React 只会匹配调换 class 的 component(这里面的 class 指的是组件的名字)
- 归拢操作,调用 component 的 setState 方法的时候, React 将其标志为 dirty 到每一个事件轮回收尾, React 搜检悉数标志 dirty 的 component 重新绘图.
- 采用性子树渲染。拓荒东说念主员不错重写 shouldComponentUpdate 普及 diff 的性能。
## 42、为什么诬捏 dom 会普及性能
诬捏dom卓绝于在js和实在dom中间加了一个缓存,期骗dom diff算法幸免了莫得必要的dom操作,从而普及性能。
## 43、useCallback 和 useMemo 的使用场景
useCallback 和 useMemo 不错用来缓存函数和变量,普及性能,减少资源破坏。但并不是悉数的函数和变量王人需要用这两者来已毕,他也有对应的使用场景。
咱们知说念 useCallback 不错缓存函数体,在依赖项莫得变化时,前后两次渲染时,使用的函数体是一样的。它的使用场景是:
函数作为其他 hook 的依赖项时(如在 useEffect()中);
函数作为 React.memo()(或 shouldComponentUpdate )中的组件的 props;
主如果为了幸免重更生成的函数,会导致其他 hook 或组件的无谓要刷新。
useMemo 用来缓存函数实施的终结。如每次渲染时王人要实施一段很复杂的运算,或者一个变量需要依赖另一个变量的运算终结,就王人不错使用 useMemo()。
## 44、为什么 JSX 中 class 变成了 className?
因为在 JavaScript 里 class 是一个关键字,用来界说类。是以在 JSX 里不可再用 class 来示意 HTML 元素的类名了,就用 className 来代替,这么就不会和 JavaScript 的关键字冲破了。
## 45、什么是 React Diff,对比 Vue Diff?
`React Diff`
React 的 Diff 算法主如果基于两个假定:不同类型的元素会产生不同的树;拓荒东说念主员不错通过建造key属性来见知 React 哪些元素在不同的渲染之间是牢固的。在对比时,React 会对新旧诬捏 DOM 树进行深度优先遍历,分层比较节点,当发现节点类型不同期,获胜替换通盘子树,当节点类型调换且有key时,会进行更邃密的比较和更新。
`Vue Diff`#深度好文辩论#
Vue 的 Diff 算法在比较节点时,一样会优先判断节点类型是否调换。在处理列表时也依赖key属性。不外 Vue 的 Diff 算法在某些细节上与 React 有所不同,举例在静态节点和动态节点的处理上,Vue 会对静态节点进行优化,尽量减少对静态节点的重叠比较。
## 46、react合成事件
react的合成事件,屏蔽了浏览器自带的事件, 管制了浏览器的不兼容,
将事件绑定在document上,按照冒泡或者拿获的旅途去蚁合真确的事件处理函数,在此过程中会先处理原滋事件,然后当冒泡到document对象后 `平形势件 是绑定在实在dom上`
## 47、ajax 应该放在哪个人命周期?
在 `React 类组件`中,ajax 肯求平凡放在 componentDidMount 人命周期方法中。因为这个时候组件仍是挂载到 DOM 上,不错进行数据的获得操作,而况不会引起格外的渲染。
在 `React Hooks` 中,ajax 肯求平凡放在 useEffect hooks 中。
## 48、说一下React Hooks在平时拓荒中需要端庄的问题和原因?
React Hooks在使用时端庄事项:
- 1、只可在React函数中使用(函数式组件或自界说hook)。
- 2、只可在函数最外层调用hook,不可包括在if,for等语句中或者子函数中。
- 3、useState中存储的是援用类型的数据时,修改state时,一定要复返新的援用。
原因:
- Hooks专为函数组件的逻辑复用而设想是以只可用在函数式组件和自界说hooks。
- hooks在调用的时候,需要确保先后调用规定,一个规定出问题,会导致通盘按次的零星词语。
- 如果在useState中存储的是援用类型,更新时不更援用地址时的话,React会以为咱们莫得更新数据,则不进行组件更新。
## 49、请纠合React Router已毕React项辩论路由守卫
React已毕路由抑止的基本念念路照旧期骗Route的render函数,通过判断抑止要求来已毕不同的组件的跳转,从良友毕抑止
## 50、是否使用过React Portals,在什么场景下使用?
Portal提供了一种将子节点渲染到存在于父组件之外的DOM节点的优秀决策。
举例:
一个Portal的典型用例是当父组件有overflow:hidden或z-index神情时ag百家乐接口多少钱,需要子组件八成在视觉上“跳出”其容器。举例:对话框、悬浮卡以及领导框