首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React常见面试题

,函数式编程思想 数据可变,双向数据绑定,(组件和DOM之间),响应式设计 设计思想 all in js (html->jsx, css->style-component/jss) html,,css...等生命周期钩子功能 useContext :共享钩子,在组件之间共享状态,可以解决react逐层通过props传递数据; 额外Hook: useReducer: action钩子,提供了状态管理,其基本原理是通过用户在页面上发起...useEffect可以让你在函数组件执行副使用(数据获取,设置订阅,手动更改React组件DOM)操作 默认情况下每次函数加载完,都会执行(不要在此修改state,避免循环调用),useEffect...生命周期) 由于添加/删除订阅代码紧密性,所以useEffect设计在同一个地方,如果effect返回一个函数,react将会在执行清除时调用它 使用场景: 订阅外部数据源(防止数据泄露) 设置页面标题...共享状态钩子,在组件之间共享状态,可以解决react 逐层通过props传递数据问题 使用流程(使用流程和react-redux差不多): 创建store:通过 createContext Api 包裹整个组件

4.1K20

亲手打造属于你 React Hooks

handleCopy 在这个函数,我们首先需要确保它只接受字符串或数字类型数据。我们将建立一个 if-else 语句,它将确保类型是字符串或数字。...回到我们钩子,我们可以创建一个名为 resetInterval 形参,它默认值为null,这将确保在没有参数传递给它情况下状态不会重置。...为此,我们可以使用一个媒体查询(CSS),或者使用一个自定义React钩子来提供当前页面的大小,并隐藏或显示JSX链接。 以前,我使用是一个名为react-use钩子。...useWindowSize 首先,我们将在utils文件夹创建一个新.js文件,与钩子useWindowSize同名。我将在导出自定义钩子同时导入React(以使用钩子)。...由于与作为API /外部资源窗口API交互将被归类为副作用,所以我们需要访问useEffect钩子用户代理。

10K60
您找到你想要的搜索结果了吗?
是的
没有找到

前端一面经典react面试题(边面边更)

从本质上来说,Virtual Dom是一个JavaScript对象,通过对象方式来表示DOM结构。将页面的状态抽象为JS对象形式,配合不同渲染工具,使跨平台渲染成为可能。...它提供了一系列React组件,包括数字格式化、字符串格式化、日期格式化等。在React-intl,可以配置不同语言包,他工作原理就是根据需要,在语言包之间进行切换。...当 Facebook 第一次发布 React 时,他们还引入了一种新 JS 方言 JSX,将原始 HTML 模板嵌入到 JS 代码。...,组件自身状态和生命周期钩子,也能使组件直接访问 store 并维持状态当组件仅是接收 props,并将组件自身渲染到页面时,该组件就是一个 '无状态组件(stateless component)'...为了演示这一点,在渲染 Icketang组件时,分别传递和不传递user属性数据来观察渲染结果。

2.2K40

useEffect() 与 useState()、props 和回调、useEffect 依赖类型介绍

useEffect() 与 useState() useState是一个 React 钩子函数,用于管理和更新功能组件状态。...useEffect 是另一个 React 函数,用于在功能组件执行副作用。副作用包括数据获取、DOM 操作、设置订阅等。它允许您在初始呈现后运行代码,并响应状态或道具变化。...props和回调 Props(属性缩写)用于将数据从父组件传递到子组件。Props是只读;子组件不能直接修改其 props。它们用于组件之间通信和数据传输。...例如,在我们 PlayerCard.js ,“player”是一个 prop 示例,它是从 PayerList.js 传递下来: import React from 'react'; const...'Light' : 'Dark'} Mode useEffect() 依赖类型 React useEffect 钩子接受一个可选第二个参数

25630

美丽公主和它27个React 自定义 Hook

它在需要复制文本,URL、可分享内容或用户生成数据情况下特别有用。...另一个优点是存储数据与组件状态之间自动同步。每当存储数据发生更改时,该钩子会相应地更新组件状态。同样,当组件状态发生更改时,该钩子会自动将新值持久化到存储。...只需将所需媒体查询作为参数传递,该钩子将返回一个布尔值,指示媒体查询是否与当前视口大小匹配。 使用该自定义钩子可以轻松地在整个应用程序实现响应式行为。...此外,当调查特定组件为什么没有如预期般更新或在性能关键应用程序微调优化时,这个钩子也可能非常有价值。 通过将「组件名称」和「属性」传递钩子,我们可以获得一个包含所有相关调试数据info对象。...ReactuseState和useEffect钩子来管理加载、错误和「地理位置数据状态。

56320

一份react面试题总结

相同点: 组件是 React 可复用最小代码片段,它们会返回要在页面渲染 React 元素。...js实现一套dom结构,他作用是讲真实dom在js做一套缓存,每次有数据更改时候,react内部先使用算法,也就是鼎鼎有名diff算法对dom结构进行对比,找到那些我们需要新增、更新、删除dom...redux 在React页面重新加载时怎样保留数据?...这个问题就设计到了数据持久化, 主要实现方式有以下几种: Redux: 将页面数据存储在redux,在重新加载页面时,获取Redux数据; data.js: 使用webpack构建项目,可以建一个文件...,data.js,将数据保存data.js,跳转页面后获取; sessionStorge: 在进入选择地址页面之前,componentWillUnMount时候,将数据存储到sessionStorage

7.4K20

阿里前端二面必会react面试题总结1

state、 各种组件生命周期钩子等,但是在函数定义,我们却无能为力,因此 React 16.8 版本推出了一个新功能 (React Hooks),通过它,可以更好在函数定义组件中使用 React...中使用useState,React 会报错提示;类组件不会被替换或废弃,不需要强制改造类组件,两种方式能并存;重要钩子状态钩子 (useState): 用于定义组件 State,其到类定义this.state...useEffect(callback, source)接受两个参数callback: 钩子回调函数;source: 设置触发条件,仅当 source 发生改变时才会触发;useEffect钩子在没有传入...Reactprops为什么是只读?this.props是组件之间沟通一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重函数式编程思想。提到函数式编程就要提一个概念:纯函数。...简单地说,在 React中元素(虛拟DOM)描述了你在屏幕上看到DOM元素。换个说法就是,在 React中元素是页面DOM元素对象表示方式。

2.7K30

React报错之Too many re-renders

立即调用一个事件处理器,而不是传递一个函数。 有一个无限设置与重渲染useEffect钩子。...该函数是在页面加载时立即被调用,而不是事件触发后调用。 传递函数 为了解决该错误,为onClick事件处理器传递函数,而不是传递调用函数结果。...移入依赖 解决该错误一种办法是,把这个对象移到useEffect钩子里面,这样我们就可以把它从依赖数组移除。...useMemo钩子里面,以获得一个不会在渲染之间改变记忆值。...我们传递给useMemo钩子第二个参数是一个依赖数组,它决定了我们传递给useMemo回调函数何时被重新运行。 需要注意是,数组在JavaScript也是通过引用进行比较

3.2K40

React 入门手册

React 为了保证页面能正常显示,对这种情况进行了特殊处理,但是它会在开发者工具给出警告: ?...useEffect 钩子允许组件访问它生命周期事件。 当你调用这个钩子时,你需要传入一个函数。在组件第一次被渲染时候,以及在随后每次重新渲染 / 更新时,React 都会调用这个函数。...React 首先更新 DOM,然后调用任何传递useEffect() 函数。 所有这些都不会阻塞 UI 渲染,即使是同步函数。.../ 更新时,传递useEffect() 函数都会被执行,所以出于性能上考虑,我们可以告诉 React 在某些时候不要执行这个函数。...学习如何使用 React 路由。 学习如何测试 React 应用。 了解基于 React 构建应用程序框架, Gatsby 或者 Next.js

6.4K10

React技巧获取鼠标坐标位置

为了得到相对于页面上某个元素鼠标坐标,我们必须从clientX减去offsetLeft,从clientY减去offsetTop。...offsetTop属性返回当前元素外边界相对于,位置最近祖先元素内边界之间像素数。 clientX属性返回事件发生时,在应用程序视口中水平坐标。...钩子传递依赖数组,因为我们只想在组件挂载时,注册mousemove 一次。...当组件卸载时,从useEffect 钩子返回函数会被调用。 我们使用removeEventListener 方法来移除之前注册事件监听。...清理步骤很重要,因为我们要确保我们应用程序没有任何内存泄漏。 screenX/Y属性 screenX属性返回全局坐标鼠标的水平坐标(偏移)。

2.1K20

在 localStorage 持久化 React 状态

在本教程,我们将了解如何创建自定义 React 钩子,来编写信息保存本地功能,以便我们在需要时使用它。...如果你应用是服务端渲染(使用框架比如 Next.js 或者 Gatsby),如果你尝试使用该钩子函数,你将会得到一个错误。...实战 这个钩子函数做了一个单一假设,这在 React 应用程序是相当安全:表单输入值保存在 React 状态(state)。...如果值存在,我们将使用该值作为我们初始值。否则,我们将使用钩子函数传递默认值(在我们先前例子,其默认值是 day)。...为此,我们可信赖伙伴 useEffect 派上用场: React.useEffect(() => { window.localStorage.setItem(name, JSON.stringify

3K20

前端面试之React

React就是Facebook一个开源JS框架,专注层面为View层,不包括数据访问层或者那种Hash路由(不过React 有插件支持),与Angularjs,Emberjs等大而全框架不同,React...react整体是函数式思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react,是单向数据流,推崇结合immutable来实现数据不可变。 hooks用过吗?...React Hooks几个常用钩子: useState() //状态钩子 useContext() //共享状态钩子 useReducer() //action 钩子 useEffect() //副作用钩子...而useEffect是会在整个页面渲染完才会调用代码。...默认情况下,JS 运算、页面布局和页面绘制都是运行在浏览器主线程当中,他们之间是互斥关系。如果 JS 运算持续占用主线程,页面就没法得到及时更新。

2.5K20

社招前端二面必会react面试题及答案_2023-05-19

高阶组件应用场景权限控制利用高阶组件 条件渲染 特性可以对页面进行权限控制,权限控制一般分为两个维度:页面级别 和 页面元素级别// HOC.js function withAdminAuth...,更新页面React虚拟DOM和Diff算法内部实现传统 diff 算法时间复杂度是 O(n^3),这在前端 render 是不可接受。...,组件自身状态和生命周期钩子,也能使组件直接访问 store 并维持状态当组件仅是接收 props,并将组件自身渲染到页面时,该组件就是一个 '无状态组件(stateless component)'...尽管不建议在app中使用context,但是独有组件而言,由于影响范围小于app,如果可以做到高内聚,不破坏组件树之间依赖关系,可以考虑使用context对于组件之间数据通信或者状态管理,有效使用props...:组件已经更新销毁阶段componentWillUnmount:组件即将销毁在 React 如何处理事件为了解决跨浏览器兼容性问题,SyntheticEvent 实例将被传递给你事件处理函数,SyntheticEvent

1.4K10

React Hooks 学习笔记 | useEffect Hook(二)

在类组件,我们通常会在 componentDidMount 和 componentDidUpdate 这两个常用生命钩子函数进行操作,这些生命周期相关方法便于我们在合适时机更加精确控制组件行为...,或者清理任何在componentDidMount()创建DOM元素(elements),你可能会想到类组件 componentWillUnmount()这个钩子函数,示例代码如下: import...,这就意味着 DOM 加载完成后,状态发生变化造成 re-render 都会执行 useEffect Hook 逻辑,在一些场景下,我们没必要在状态发生变化时,调用此函数逻辑,比如我们在这里定义数据接口更改数据状态...,数据状态发生变化,会重新调用 useEffect Hook 请求逻辑,这样岂不是进入了无限循环,数据量大的话,说不定就把接口请求死了。...,方便将数据通过参数形式传递给父组件。

8.2K30

react hooks api

•复杂组件难于理解:大量业务逻辑需要放在componentDidMount和componentDidUpdate等生命周期函数,而且往往一个生命周期函数中会包含多个不相关业务逻辑,日志记录和数据请求会同时放在...useEffect会在每次 DOM 渲染后执行,不会阻塞页面渲染。...--> 执行副作用 --> 组件更新 --> 执行清理函数 --> 组件卸载 下面看一个模拟请求数据例子:页面加载进来,请求数据,替换loading状态,填充内容: const fakeUserInfo...使用也像普通函数调用一样,Hook 里面其它 Hook(useEffect)会自动在合适时候调用: 在3.4例子,完全可以进一步封装。...只能在Function Component或者自定义 Hook 调用 Hooks,不能在普通 JS 函数调用。

2.7K10

React Server Components手把手教学

唯一方法是在 useEffect() 钩子在客户端进行数据获取,这比服务器端获取需要更长往返时间,并且仅在组件渲染和注入后才发生。...我们从组件本身连接到数据库(MongoDB)。 在常规开发,我们只有在Node.js或Express才会看到这种代码 然后我们查询数据库并获取数据,以便将其传递给我们JSX进行渲染。...不能做事情: 无法使用 React 提供钩子,比如 useState、useReducer、useEffect 等,因为服务器组件是在服务器上渲染。...因此,我们现在将构建一个课程列表页面,以展示我们如何在Next.js创建服务器组件,以及它与客户端组件不同之处。 ❝请注意,我们不会在这里深入学习Next.js或MongoDB。...这意味着我们不能使用任何事件处理程序或React钩子useState、useReducer和useEffectReact服务器组件可以导入并渲染客户端组件,但反之则不成立。

61730

离开页面前,如何防止表单数据丢失?

// FormPrompt.js import { useEffect } from "react"; export const FormPrompt = ({ hasUnsavedChanges...// FormPrompt.js import { useEffect } from "react"; import { Prompt } from "react-router-dom"; const...使用 React Router 6 防止页面导航 件已被移除,而 unstable_usePrompt 钩子在 6.7.0 版本中被添加。正如其名称所示,该钩子实现可能会发生变化,尚未记录文档。...我们可以使用这个钩子来复制版本5 Prompt 组件行为,但首先,我们需要调整我们 App 组件以使用新数据路由器,因为它们是 unstable_usePrompt 钩子工作所必需。...现在,我们可以添加一个自定义 usePrompt 钩子,并像版本5 Prompt 组件一样使用它。

5.7K20

第三十四期:逆向思维来学习前端

何在不看源码情况下推测源码内容 如何在不看源码情况下推测源码内容,这个问题是在写React项目的时候闪现出来。...那么有可能又这么一个场景,比如我对ReactuseState钩子函数比较熟悉,而且项目里我也经常用到这个钩子函数,我想知道它实现过程,但是我又没时间去看它源码,或者源码我根本也看不懂。...以React钩子函数useEffect()为例,它写法大致如下: import React,{useEffect} from 'react' export ({...props}) => {...抛开那些复杂逻辑,钩子函数其实也是模板一个方法,只是它被用来隔离变化而已,当模板某些属性发生变化时,钩子函数会执行不同策略,仅此而已。...我们可以思考一下,在js哪些情况下才会用数组作为参数呢?对了,apply方法,apply方法第二参参数就是数组或类数组对象。

65620

useTypescript-React Hooks和TypeScript完全指南

这些功能可以在应用程序各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。...表示任何类型 React 节点(基本上是 ReactElement + 原始 JS 类型合集) 简单示例: const elementOrComponent: React.ReactNode =...用于标识 jsx 文件 style 对象(通常用于 css-in-js) 简单示例: const styles: React.CSSProperties = { display: 'flex',...将在每个渲染时被调用,但是你还可以传递一个可选第二个参数,该参数仅允许您在 useEffect 依赖值更改时或仅在初始渲染时执行。...它允许您在 React Dev Tools 显示自定义钩子函数标签。 示例 我之前基于 umi+react+typescript+ant-design 构建了一个简单后台通用模板。

8.4K30
领券