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

40道ReactJS 面试问题及答案

让我们深入探讨有助于你 2024 年 ReactJS 面试中取得好成绩的基本主题。 1.ReatcJS是什么以及它是如何工作的?...它的工作原理是记住组件渲染的结果,并且只有 props 发生变化时才重新渲染。 当处理接收相同道具但不需要在每次更改时重新渲染的功能组件,这尤其有用。...React 中的服务器端渲染如何工作? 服务器端渲染(SSR)是一种将 React 应用程序发送到客户端之前服务器上渲染它们的技术。...新的客户端和服务器渲染 API: React 18 还引入了新的客户端和服务器渲染 API,使客户端和服务器上渲染 React 组件变得更加容易。...数据获取: 使用 Axios、fetch 或 GraphQL 客户端等库从外部 API 或来源获取数据。 使用 useEffect 钩子组件渲染后执行数据获取和副作用。

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

React 代码共享最佳实践方式

React官方实现一些公共组件,也用到了高阶组件,比如react-router中的withRouter,以及Redux中的connect。在这以withRouter为例。...读者或许会疑惑,“我们为什么需要调用props属性来实现组件内部渲染,而直接在组件内完成渲染”?...借用React官方的答复,render props并非每个React开发者需要去掌握的技能,甚至你或许永远都不会用到这个方法,但它的存在的确为开发者思考组件代码共享的问题,提供了多一种选择。...} return {buttonText} } 相较而言,Hook显得更轻量,贴近函数组件的同时,保留了自己的状态...哪怕是最为最热门的react hook,虽然每一个hook看起来都是那么的简短和清爽,但是实际业务中,通常都是一个业务功能对应多个hook,这就意味着当业务改变,需要去维护多个hook的变更,相对于维护一个

3K20

React新文档:不要滥用effect哦

你或你的同事使用useEffect时有没有发生过以下场景: 当你希望状态a变化后「发起请求」,于是你使用了useEffect: useEffect(() => { fetch(xxx); }, [...如下Rendering code包含副作用(count变化),就是推荐的写法: let count = 0; function App() { count++; const [name, update...= useState('KaSong'); const changeName = () => { update('KaKaSong'); } return <div onClick...对于这种:视图渲染后触发的副作用,就属于effect,应该交给useEffect处理。...总结 当我们编写组件,应该尽量将组件编写为纯函数。 对于组件中的副作用,首先应该明确: 是「用户行为触发的」还是「视图渲染后主动触发的」? 对于前者,将逻辑放在Event handlers中处理。

1.4K10

听说现在都考这些React面试题

查看是否有 CI/CD,如果有跟着 CI/CD 部署的脚本跑命令 查看是否有 dockerfile,如果有跟着 dockerfile 跑命令 查看 npm scripts 中是否有 dev/start,尝试...吗 不可以,created/componentWillMount ,还未挂载,代码仍然服务器中执行,此时没有浏览器环境,因此此时访问 localStorage 将会报错 16 react hooks...={incr}>{count}; } 当连续点击 10 次,会输出多少 27 React 项目中 immutable 是优化性能的 28 redux 中如何发送请求 29 redux...37 SSR 项目中如何判断当前环境服务器端还是浏览器端 38 React.setState 是同步还是异步的 39 什么是服务器渲染 (SSR) 40 React 中如何实现代码分割 (code...splitting) 41 React 中如何做好性能优化 42 React 中发现状态更新卡顿,此时应该如何定位及优化 43 当多次重复点击按钮,以下三个 Heading 是如何渲染

99030

React 16 Roadmap

算是提出v = f(d)的 UI 层函数式思路之后,在这条路上的进一步探索 Suspense Code Splitting场景已经露过面了,主要贡献在于用户体验与开发体验上。...主要原因在于: 依赖的一些底层 API 尚未 ready(见Context.write),导致 API 无法最终确定 缺少一些 UI 模式支持(比如组件树层级无关的 Loading) 但最终会形成一套规范...,其它网络库(如Apollo)遵守规范说明即可接入 Suspense 支持: We’ll provide a reference implementation of a basic “React Cache...P.S.其中 double rendering 是指前后端渲染结果不一致(比如前端渲染依赖数据请求),为保证状态一致,需要丢弃后端渲染结果,前端再次渲染该组件,具体见[Hydration](https...://reactjs.org/docs/react-dom.html#hydrate 目前相关消息很少,但确定SSR 大幅重构是 2019 年的重点目标: The new server renderer

1.2K30

官方答:React18中请求数据的正确姿势(其他框架也适用)

一些同学喜欢useEffect中请求初始数据,类似这样: useEffect(() => { fetch(xxx).then(data => setState(data.json())) }, [...如果推荐这种方式,那么推荐的方式是什么呢? 本文来看看Danreddit[1]是如何回答上述问题的。...这是一个普遍的问题 除了React外,大部分以「组件」形式组织的前端框架,都有如下类似的API: effect didMount/didUpdate 如果有「初始化时请求数据」的需求,这类框架都会选择在上述回调函数内执行请求操作...为什么推荐这么写? 需要解决竞态问题 useEffect中请求数据要面临的第一个问题是「需要解决竞态问题」。...CSR的白屏时间 CSR(Client-Side Rendering,客户端渲染useEffect中请求数据,在数据返回前页面都是白屏状态。

2.4K30

React 组件:计时器例子

添加服务器通信 learn from 《React全家桶:前端开发与实例详解》 https://zh-hans.reactjs.org/tutorial/tutorial.html https...://zh-hans.reactjs.org/docs/create-a-new-react-app.html#create-react-app 本章学习的目标是做一个定时器 1....每个 state 应该在哪个组件里 如何确定,步骤: 标识基于该state渲染的组件 查找state共同所有者 较高层次的组件拥有该state 找不到的话,创建新组件来保存 state,并置于层次结构的上方...添加反向数据流 TimerForm组件 表单创建、更新计时器 取消动作 让父组件拥有函数(事件发生决定采取什么行为),父组件 通过 props 将函数传递给 TimerForm class TimerForm...} onTrashClick={this.handleTrashClick} // add /> 计时器还不能工作

4.3K20

把 React 作为 UI 运行时来使用

React 应用中,通常你不会调用这些 API ,因为那是 React 的工作渲染渲染器告诉 React 如何与特定的宿主环境通信,以及如何管理它的宿主实例。...React 渲染器能以下面两种模式之一进行工作。 绝大多数渲染器都被用作“突变”模式。这种模式正是 DOM 的工作方式:我们可以创建一个节点,设置它的属性,之后往里面增加或者删除子节点。...例如,它可以让浏览器组件调用之间做一些工作,这样重渲染大体量的组件树就不会阻塞主线程【https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react...例如,渲染一棵很深的树(每次页面转换的时候发生)而阻塞浏览器。改变跟踪并不会让它变得更快 — 这样只会让其变得更慢因为我们执行了额外的订阅工作。另一个问题是我们需要等待返回的数据渲染视图之前。...当事件被触发,子组件的 onClick 首先被触发(同时触发了它的 setState )。然后父组件它自己的 onClick 中调用 setState 。

2.4K40

用动画和实战打开 React Hooks(一):useState 和 useEffect

当我们第一次调用组件函数,触发初次渲染;然后随着 props 的改变,便会重新调用该组件函数,触发重渲染。 你也许会纳闷,动画里面为啥要并排画三个一样的组件呢?...如果你觉得匪夷所思嘛……来简单解释一下: 每次渲染相互独立,因此每次渲染组件中的状态、事件处理函数等等都是独立的,或者说只属于所在的那一次渲染 我们 count 为 3 的时候触发了 handleAlertClick...实际效果动画如下: 可以看到,后面的所有重渲染都不会触发 Effect 的执行;组件销毁,运行 Effect Cleanup 函数。...注意 如果你熟悉 React 的重渲染机制,那么应该可以猜到 deps 数组判断元素是否发生改变同样也使用了 Object.is 进行比较。...我们先来看看当组件初次渲染(挂载),情况到底是什么样的: 注意以下要点: 初次渲染,我们通过 useState 定义了多个状态; 每调用一次 useState ,都会在组件之外生成一条 Hook

2.5K20

虚拟DOM已死?|TW洞见

Binding.scala 实现了一套精确数据绑定机制,通过模板中使用 bind 和 for/yield 来渲染页面。你可能用过一些其他 Web 框架,大多使用脏检查或者虚拟 DOM 机制。...比如,你想要在某个 列表的顶部插入一项 ,那么 ReactJS 框架会误以为你修改了 的每一项 ,然后尾部插入了一个 。...3 Binding.scala的精确数据绑定 Binding.scala 使用精确数据绑定算法来渲染 DOM 。 Binding.scala 中,你可以用 @dom 注解声明数据绑定表达式。...注意,status 并不是一个普通的函数,而是描述变量之间关系的特殊表达式,每次渲染只执行其中一部分代码。比如,当 count 改变,只有位于 count.bind 以后的代码才会重新计算。...我将在下一篇文章中介绍 Binding.scala 如何在渲染 HTML 静态检查语法错误和语义错误,从而避免 bug 。

5.9K50

什么是Server Component?

❝React Server Components 目前 还处于RFC 的阶段,現下只能透过实验性发布的套件以及非常底层的 API 去使用,我们可以先做简单的了解 ❞ 解决什么问题 Dan 开门见山,丢出了我们业务开发中需要权衡三个点...这是一个很常见的组件化组合,问题在于每个组件都需要不同的数据,但是就体验而言我们更希望这些组件的渲染尽量同时,而且如果关注性能的话,我们也会考虑并行的去 fetch 数据,于是我们通常会 fetch 逻辑放到顶层...这又会让体验变差,因为浏览器从服务端 fetch 数据是比较贵的 IO,抽象一下就是下面这样: 我们之所以需要从服务端 fetch 数据,是因为我们把所有渲染操作放到了客户端,那如果我们把部分渲染逻辑放服务端呢...如果我们把组件放在服务端执行,数据请求会非常快 Server Component一些注意点 容器组件才能在服务端执行(Server端并不能处理交互,交互还是得交给客户端处理),有交互和State状态的组件只能跑客户端...,这样数据请求非常快,Suspense是局部水合,可以形成互补 疑问点 我总感觉首次渲染后,后面只进行数据请求,涉及序列化的“指令”(HTML的生成那样),应该是由客户端客户端进行接管,岂不是更好(

91020

React.Component损害了复用性?|TW洞见

每次点击“Add”按钮,标签编辑器应该检查标签是否已经添加过,以免重复添加标签。而在成功添加标签后,还应清空文本框,以便用户输入新的标签。 除了用户界面以外,标签编辑器还应该提供API。...ReactJS开发者可以随时用 ReactDOM.render 函数把 TagPicker 渲染到任何空白元素内。...此外,ReactJS框架可以 state 和 props 改变触发 render ,从而避免了手动修改现存的DOM。 如果不考虑冗余的 key 属性,单个组件内的交互ReactJS还算差强人意。...所以,x按钮中的onclick事件中删除tags中的数据,页面上的标签就会自动随之消失。 同样,Add按钮的onclick中向tags中添加数据,页面上也会自动产生对应的标签。...每当用户 tagPicker 输入新的标签,tags 就会改变,网页也就会自动随之改变。

4.9K90

React 函数式组件性能优化指南

前言 目的 本文只介绍函数式组件特有的性能优化方式,类组件和函数式组件都有的介绍,比如 key 的使用。另外本文不详细的介绍 API 的使用,后面也许会写,其实想用好 hooks 还是蛮难的。...因为 React 里最重(花时间最长)的一块就是 reconction(简单的可以理解为 diff),如果 render,就不会 reconction。 减少计算的量。...那么我们怎么才能做到 props 没有变化的时候,子组件渲染呢?...如何解决 找到问题的原因了,那么解决办法就是函数没有改变的时候,重新渲染的时候保持两个函数的引用一致,这个时候就要用到 useCallback 这个 API 了。...不过另外提醒两点 一、如果没有提供依赖项数组,useMemo 每次渲染都会计算新的值; 二、计算量如果很小的计算函数,也可以选择不使用 useMemo,因为这点优化并不会作为性能瓶颈的要点,反而可能使用错误还会引起一些性能问题

2.3K10

React Hooks 可以为我们带来什么,及为什么我觉得React才是前端的未来

/以上所述所有React均指ReactJS,下述会用React简称/ 要明白什么是React Hooks,那可能先了解一下它的两个替代品HOC和FaCC/Render Props HOC(Higher-Order...这里HOC的写法就是提出共有的部分,接收一个Component进行渲染。...如果再深入思考一下,就可以想到,复杂的业务逻辑里面,如果发送同一个API请求的haul,我们不应该在每一个独立component里面发送一个请求。...试想一下,一个庞大项目里面,广泛使用HOC们,会带来什么样的代码复杂度?...我的解答如下 技术门槛不错,但是我觉得技术是用来改变生活的,而不是为了让部分人找到工作。就好比开车有职业赛车手,也有普通道路上开车的司机。

63340

React: Hooks入门-手写一个 useAPI

react-hooks 入门 写在最前面 最近项目 升级了react 16.8+,接入了 hooks,这里学习一下最基础的几个官方 hooks 下面是官网文档的链接,基础知识掌握牢靠的朋友可以再看看...zh-hans.reactjs.org/docs/hooks-… 1、useEffect 官方 demo mport React, { useState, useEffect } from 'react...通过使用这个 Hook,你可以告诉 React 组件需要在渲染后执行某些操作。React 会保存你传递的函数(我们将它称之为 “effect”),并且执行 DOM 更新之后调用它。...这种优化有助于避免每次渲染都进行高开销的计算。...当组件上层最近的 更新,该 Hook 会触发重渲染,并使用最新传递给 MyContext provider 的 context value 值。

1.7K30

Redux 入门教程(二):中间件与异步操作

二、中间件的用法 本教程涉及如何编写中间件,因为常用的中间件都有现成的,只要引用别人写好的模块即可。比如,上一节的日志中间件,就有现成的redux-logger模块。这里只介绍怎么使用中间件。...操作发起的 Action 操作成功的 Action 操作失败的 Action 以向服务器取出数据为例,三种 Action 可以有两种不同的写法。...操作开始,送出一个 Action,触发 State 更新为"正在操作"状态,View 重新渲染 操作结束后,再送出一个 Action,触发 State 更新为"操作结束"状态,View 再一次重新渲染...(`/some/API/${postTitle}.json`) .then(response => { type: 'FETCH_POSTS', payload...', fetch(`/some/API/${postTitle}.json`) .then(response => response.json()) )); }

1.4K40
领券