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

你要的 React 面试知识点,都在这了

什么是错误边界 什么是 Fragments 什么是传送门(Portals) 什么是 Context 什么是 Hooks 如何提高性能 如何在重新加载页面时保留数据 如何从React中调用API 总结...在函数式编程中,你无法更改数据,也不能更改。 如果要改变或更改数据,则必须复制数据副本来更改。...什么是 Hooks Hooks 是React版本16.8中的新功能。 请记住,我们不能在函数组件中使用state ,因为它们不是类组件。Hooks 让我们在函数组件中可以使用state 和其他功能。...如何在重新加载页面时保留数据 单页应用程序首先在DOM中加载index.html,然后在用户浏览页面时加载内容,或者从同一index.html中的后端API获取任何数据。...如何在React进行API调用 我们使用redux-thunk在React中调用API。因为reduce是纯函数,所以没有副作用,比如调用API。

18.5K20

前端单测,为什么不要测 “实现细节”?

看起来非常完美,而且在 UI 真实的使用场景中也没任何问题,但当我们回去跑一下测试用例,kaboom,会发现 setOpenIndex sets the open index state properly...它是指,在我们跑测试时用例都通过了,但实际上业务代码/应用代码里是有问题的,用例是应该要抛出错误的!那我们应该怎么才能覆盖这些情况呢?...这也是为什么 Enzyme 测试用例为什么这么容易出现 “假错误”,因为 当用它来写一些 End User 和 Developer 都不 care 的测试用例时,我们实际上是在创造第三个用户视角:Tests...当你的测试和你软件使用方式越相似,那么它给你的信心就越大 —— Kent React Hooks? 不使用 Enzyme 的另一个原因是 Enzyme 在 React Hooks 使用上有很多问题。...事实证明,当测试代码 “实现细节” 时,“实现细节” 的中的任何修改都会对测试有很大的影响。

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

    如何测试 React Hooks ?

    一旦你把类组件 Accordion 重构为函数式组件,那些测试就会挂掉。所以为了确保我们的代码库能在不推倒重来的情况下准备好 hooks 的重构,我们能做些什么呢?...这招被认为是最好的解决之道,因为操作实际上就是异步的,可从功效学的角度并不尽善尽美 -- 因为当前在 jsdom(工作在浏览器中) 中这样尝试的话实际上是有 bug 的。...按我们从 “React Hooks: 对 render props 有何影响?” 中学到过的,自定义 hooks 才是在 React 中分享代码的更好的一种原生方法。...结论 在重构代码前可以做的最好的一件事就是有个良好的测试套件/类型定义,这样当你无意中破坏了某些事情时可以快速定位问题。同样要谨记 如果你在重构时把之前的测试套件丢在一边,那些用例将变得毫无助益。...将我关于避免实现细节的忠告用在你的测试中,让在当今的类组件上工作良好的类,在之后重构为 hooks 时照样能发挥作用。祝你好运!

    1.6K10

    如何在受控表单组件上使用 React Hooks

    在使用 Hooks 实现了一个准系统表单之后,我同意了他们的观点。 让我们首先在有状态组件中写一个简单的表单,我们将使用 Hooks 重写该表单,你可以决定更喜欢哪种。...图片 现在 sandbox 打开了,我们必须确保使用支持 Hooks 的 React 版本。因为Hooks现在在 React v16.8的公开稳定版本。...这就是在 React 中实现受控表单的"老派"方式。 注意设置状态所需的样板文件的数量,以及在每次输入更改时更新状态的方法。 让我们使用 React Hooks (终于到了!)...我们只有 setFirstName,它的唯一目的就是在每次调用它时更新 firstName。...然而,有一个约定,在我们要修改的状态变量的名称之前附加‘set’。 现在我们知道了如何在函数组件中创建状态变量以及如何更新它。 下面让我们继续解释代码的其余部分。

    61920

    React Server Component 在 Shopify 中的最佳实践

    Shopify 是国外的一个允许客户自由搭建商城的 nocode 产品,工程师 Cathryn Griffiths 分享了他在 Shopify 中实用 React Server Component...这篇文章将着重讨论工程师在构建 Hydrogen 时候发现的 RSC 最佳实践,不光是对个人的,也是对团队的。希望能让读者们更加理解如何在 RSC 应用中编写组件,减少你的无效时间。...优先写共享组件 当你需要在 RSC 应用程序中从头构建组件时,请从共享组件开始。共享组件可以同时在服务器和客户端上下文中执行,而不会出现任何问题。...在少数情况下选择客户端组件 RSC 应用程序中的大多数组件应该是服务器组件,因此在确定是否需要客户端组件时,需要仔细分析用例。...当你在构建时,请记住以下几点: 从共享组件开始。 在特定情况下,将功能提取到客户端组件中。 如果代码永远不需要或永远不应该在客户机上执行,则改写为服务端组件。

    2.4K20

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

    在实现唤起弹窗、下拉菜单或任何在用户与其之外的任何元素交互时应该关闭的元素时,它特别有用。 下面示例中,我们特意将button放置在Modal之外,想必这也符合大家平时开发的模式。...通过使用useLocalStorage,我们可以轻松存储和检索这些设置,确保它们在重新加载页面时保持不变,甚至在用户关闭并重新打开浏览器时也是如此。...调试React组件时,获取有关渲染和属性更改的详细信息可以非常有用」。...中管理依赖关系是一件很棘手的事情,尤其是在处理复杂的数据结构或嵌套对象时。...它使你能够定义准确反映你想要跟踪的特定更改的依赖关系,确保只有在绝对必要时才执行效果。

    70820

    React组件设计实践总结05 - 状态管理

    说实话这些应用和传统 web 页面没什么区别, 每个页面都各自独立,每次打开一个新页面时拉取最新数据,增删改查仅此而已....基于 Context 实现组件状态共享,基于 hooks 实现状态管理, 这个方式足够通用. hooks 很多灵活的特性足以取代类似 Mobx 这些框架的大部分功能 只是普通的 React 组件,可以在...(绑定 react-router v4) 根据页面分割 saga 和 reducer。...你可能需要显式注解很多数据类型 扩展: react-redux-typescript-guide, rematch & Typescript 六,不是分形(Fractal) 在没有看到@杨剑锋的这条知乎回答之前我也不知道什么叫分形...这些数据在一些上下文(例如 computed,observer 的包装的 React 组件,reaction)中被访问时可以被收集依赖,当这些数据变动时相关的依赖就会被通知.

    2.2K31

    我为什么不再用 Vue,而改用 React?

    相比 mutation,reducer 的逻辑实在很难理解,因为在我学习后者时,很少见到优秀的学习资源。在我看来,Vuex 对于新手来说更容易上手。...存储在 store 目录中。中间件则在 middleware 目录里,依此类推。 所有注入都是透明的。所有配置都在 nuxt.config.js 里。太棒了!...所以我很容易就能理解 React 组件的工作机制,并知道该如何将其集成到应用程序中。 你也可以在 Vue 中使用 ES6 语法,但是 React 比 Vue 设计得更好。...看一下如何在 React 中注册组件: class MyComponent extends React.Component { render() { return() }...简化了状态和其他 React 部件(如 useEffect)的应用,现在我们用不着 componentDidMount 和 componentDidUpdate 了。

    3.5K20

    Clean-State:新的React状态管理姿势

    导语 | React从设计之初到最新的v17版本,已经经历了近百次迭代。...于是自React@v16.8.0后推出了Hooks函数,在不改变其心智模型的基础上补齐了对逻辑抽象的短板,借助这一能力我们就可以打开全新的状态管理视野。...当面临一个大型项目开发时,为了提高后续的维护迭代效率,我们首先要做的就是模块拆解,让每一个部分尽可能碎片化可复用,这也是微组件的初级概念。 而在整个拆解的过程中,我们碎片化的其实是UI层。...如何调试 在开发过程中如何进行调试呢,CS提供了插件机制来友好的支持redux-devtool的调试。...如果你是新起的React项目,强烈推荐使用Hooks纯函数的方式来编写构建你的应用,你会体验到更快的React开发姿势。

    96050

    我用 React 和 Vue 构建了同款应用,来看看哪里不一样(2020 版)

    我想尽量保持中立,通过这样的例子来告诉大家这两种技术执行特定任务时是怎样做的。 当 React Hooks 发布时,我为这篇文章更新了 “2019 版”,用函数式 Hooks 取代了类组件。...在 React 中,至少从 2019 年开始,我们一般会通过一系列 Hooks 处理状态。你可能以前没接触过这种概念,一开始它看起来可能有点奇怪。...在我们的例子中,当你调用 setName() 时,React 会知道有些状态已更改,所以可以运行它们的生命周期 Hooks。...如果你直接改变状态,React 将不得不做更多的工作来跟踪更改以及要运行的生命周期 Hooks 等。 现在我们已经搞明白了数据突变,接下来看看在两个 To Do 应用中添加新项目的方法。...在 React 中,我们的输入字段有一个名为 value 的属性。每次通过 onChange 事件侦听器 更改它的值时,都会自动更新此值。

    4.8K30

    React常见面试题

    不同hook中,不要使用判断(if) react hook底层是基于链表(Array)实现,每次组件被render时,会按顺序执行所有hooks,因为底层是链表,每个hook的next指向下一个hook...一、如何在组件加载时发起异步任务 二、如何在组件交互时发起异步任务 三、其他陷阱 参考资料: React Hooks 异步操作踩坑记 (opens new window) # react hooks...useEffect可以让你在函数组件中执行副使用(数据获取,设置订阅,手动更改React组件中的DOM)操作 默认情况下每次函数加载完,都会执行(不要在此修改state,避免循环调用),useEffect...停止恢复的时机取决于当前的一帧(16ms)内,还有没有足够的时间允许计算 fiber是react16中新发布的特性; 解决的问题: react在渲染过程时,从setState开始到渲染完成,中间过程是同步...【返回事件池】在每个 EventPlugin 中根据不同的事件类型返回 【取出合成事件】从事件池中取出,如为空,则创建 【取出回调函数】根据元素nodeid(唯一标识key) 和事件类型 从listenerBink

    4.2K20

    【React】406- React Hooks异步操作二三事

    我会讲到三个项目中非常常见的问题: 如何在组件加载时发起异步任务 如何在组件交互时发起异步任务 其他陷阱 TL;DR 使用 useEffect 发起异步任务,第二个参数使用空数组可实现组件加载时执行方法体...当需要在其他地方(例如点击处理函数中)设定计时器,在 useEffect 返回值中清理时,使用局部变量或者 useRef 来记录这个 timer。不要使用 useState。...不要试图在更改状态之后立马获取状态。 如何在组件加载时发起异步任务 这类需求非常常见,典型的例子是在列表组件加载时发送请求到后端,获取列表后展现。...这里和上面一节(组件加载时)最大的差异在于 React Hooks 只能在组件级别编写,不能在方法( dealClick)或者控制逻辑( if, for 等)内部编写,所以不能在点击的响应函数中再去调用...在 React 中 setState 内部是通过 merge 操作将新状态和老状态合并后,重新返回一个新的状态对象。不论 Hooks 写法如何,这条原理没有变化。

    5.6K20

    useTypescript-React Hooks和TypeScript完全指南

    引言 React v16.8 引入了 Hooks,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。...这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。...以前在 React 中,共享逻辑的方法是通过高阶组件和 props 渲染。Hooks 提供了一种更简单方便的方法来重用代码并使组件可塑形更强。...定义后在使用 this.state 和 this.props 时可以在编辑器中获得更好的智能提示,并且会对类型进行检查。... = props => null // v16.8起,由于hooks的加入,函数式组件也可以使用state,所以这个命名不准确。

    8.5K30

    2021年React学习路线图

    图片 React Bootstrap 主页被分割成多个组件 每个组件有一套生命周期,动态数据保存在状态中。当状态中的数据发生改变时,组件会再次渲染,来更新这些变更。你要理解这几个基础概念。...学习这些概念时,毫无疑问你将遇到条件渲染和从列表中渲染多个组件。此时,你应该创建一个简单的 React 应用。 最后要理解的是,函数组件和类组件之间的差异,以及他们的用法,这就是 Hooks。...有了 Hooks,开发者可以在函数组件中使用状态。 你应该知道如何使用最常见的 Hooks,比如 setState 和 useEffect。...它比 Redux 容易多,也可以使用 Hooks(现在你应该熟悉它了)。 它使获取数据变得简单,可以在实际应用中做一些尝试。...您应该学习最流行的测试库,如 Jest 和 Enzyme,以及如何使用库(如 Sinon )模拟 API 调用。还有其他库,比如 React 测试库。

    7.6K21

    React V16.9来了 无痛感升级 加入性能检测 【译-真香】

    (函数组件只会在上面的例子中返回。) 这种模式几乎从未在野外使用,并且支持它会导致React略大且比必要的慢。因此,我们在16.9中弃用此模式,并在遇到警告时记录警告。...这与React在处理真实浏览器事件时的工作方式相匹配,并有助于为将来React将更频繁地批量更新的组件做好准备。 但是,在16.8中act()仅支持同步功能。...在React 16.9中,act()也接受异步函数,你可以await调用它: await act(async () => { // ... }); 这解决了act()以前无法使用的其余情况,例如状态更新在异步函数内部时...其目的是帮助识别应用程序的某些部分,这些部分很慢并且可能会受益于优化(如memoization)。 可以在React树中的任何位置添加A 来测量渲染树的该部分的成本。...诚实的回答是,当我们开始时,它只需要比我们预期的更多的工作。与往常一样,我们感谢您在Twitter和我们的问题跟踪器中提出的问题和反馈。 安装 应对 Npm注册表中提供了React v16.9.0。

    4.8K30

    2020 年你应该知道的 React 库

    : React Hooks or Redux/MobX/Mobx State Tree 使用 React 路由 路由在 React 中起着重要作用。...React Bootstrap React 动画 任何 web 应用程序中的动画都是从 CSS 开始的。最终你会发现 CSS 动画并不能满足你的需求。...您可以将其集成到编辑器或 IDE 中,使其在每次保存文件时格式化您的代码。也许它并不总是符合您的口味,但至少您不必再担心自己或团队代码库中的代码格式。...建议: ESLint Prettier React 认证 在较大的 React 应用程序中,您可能希望引入具有注册、登录和退出功能的身份验证。此外,密码重置和密码更改功能往往是需要的。...以下是最受欢迎的处理该问题的库: react-i18next react-intl LinguiJS FBT 建议: react-i18next React 富文本编辑器 当涉及到在 React 中的富文本编辑器时

    14.4K40

    如何在Ubuntu上使用Webhooks和Slack部署React

    使用nano或您喜欢的编辑器,在/opt/hooks目录中创建文件hooks.json: nano /opt/hooks/hooks.json 为了webhook在GitHub发送HTTP请求时触发,我们的文件需要一个...当您的GitHub存储库中发生配置的事件(如PUSH)时,GitHub将发送一个POST请求,其中包含一个包含该事件信息的JSON正文。...在我们的例子中,我们将配置当GitHub向我们的webhook服务器发送POST请求时触发的hook。...具体来说,只有your-github-secret在HTTP请求中的GitHub与规则中的密钥匹配时并且提交发生在master分支中才会触发。...返回您的服务器并打开redeploy.sh脚本: nano /opt/scripts/redeploy.sh 在上一步中,我们在Slack通知的脚本中留下了占位符!!

    8.7K20

    BootStrap基础知识

    2019年实习时的 BootStrap(4.x)基础知识 备份 BootStrap5六角学院文档: HexSchool 顺便推荐一个程序员段子网站 techug.com 栅格系统 栅格类 例:在列中,并且只有列可以是行的直接子节点。 预定义的类如 .row 和 .col-* 可用于快速制作栅格布局。 列通过填充创建列内容之间的间隙。...在 v5 版本中的标签链接不再拥有 focus 或 hover 样式。 标签可以作为链接或按钮的一部分,用于计数器。 使用背景通用类别来快速修改标签的外观。...在 .carousel-item 上添加 data-bs-interval="" 以更改自动循环至下一个项目的延迟时间。...内联表单需要在 元素上添加 .form-inline 类 所有内联表单中的元素都是左对齐的 在荧幕宽度 小于 576px 时为垂直堆叠,如果荧幕宽度 大于等于 576px 时表单元素才会显示在同一个水平线上

    33510
    领券