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

【译】使用Enzyme和React Testing Library测试React Hooks

确保代码没有bug的一种方法就是编写测试用例。测试React hooks与测试一般程序的方式没有太大区别。 在本教程中,我们将了解如何通过使用带有hooks的to-do应用程序来实现这一点。...让我们想一下创建一个新的待办事项的过程: 1、用户在input中输入一个值。...然后,我们检查它总共有两个子元素(每个子元素是无序列表中的元素)。如果初始待办事项数量等于2则通过。...因为我们只想删除一个项目,所以我们对集合中的第一个项目触发一个click事件,它应该删除第一个待办事项。这应该使待办事项子节点的长度等于1。 这些测试也可以在GitHub上找到。...加油写面向对象的React代码! React钩子和应用中的其他钩子一样容易出错,你要确保你能很好地使用它们。正如我们刚才看到的,有几种方法可以做到这一点。

4.1K30

一杯茶的时间,上手 React 框架开发

在这篇教程中,我们将展示给你如何使用 React 构建一个待办事项应用,下面最终项目的展示成果: 你也可以在这里看到我们最后构建的结果:最终结果[3]。...你可能注意到当你添加了2个待办事项之后,会出现不同的颜色;这就是 React 中条件渲染的魅力。 当你熟悉了这个待办事项之后你就可以关闭它了。...对于包含 React 组件(我们将在之后讲解)的文件都必须在文件开头导入 React。...在这一小节中,我们了解了 JSX 的概念,并且实践了相关的知识。我们还提出了组件的概念,但是并没有深入讲解它,在下一小节中我们将详细地讲解组件的知识。...保存代码,打开浏览器,在输入框里面输入点东西,你应该可以看到下面的内容: 当你点击提交按钮之后,新的待办事项会加入到现有的 todoList 列表中,你应该可以看到下面的内容: 恭喜你!

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

    成为一名高级 React 需要具备哪些习惯,他们都习以为常

    这是一个在我们的待办事项列表应用程序上下文中重复状态的例子。我们需要跟踪待办事项列表上的项目,以及哪些项目已经被选中。...完成的待办事项被存储在状态中两次,所以如果用户编辑待办事项的文本内容,你只调用setTodos, completedTodos现在包含旧的文本,这是不正确的! 有一些方法可以去复制你的状态。...在对抗糟糕的渲染性能时,你最强大的武器是React.memo,它只在组件的道具更改时才重新呈现组件。这里的挑战是确保道具不会在每次渲染中改变,在这种情况下React。备忘录不起作用。...想象一下,在一个待办事项列表应用程序中,“X”按钮删除待办事项时是不可见的,直到你将鼠标悬停在该待办事项上。有些设计师喜欢这样的“整洁”,但这需要用户四处搜寻,弄清楚如何执行基本操作。...但是,如果您正在编写的业务应用程序没有这些要求,请只使用客户端呈现。你以后会感谢我的。 将样式与组件搭配 应用程序的CSS很快就会变得杂乱无章,没有人能理解。

    4.7K40

    在10分钟内概览Svelte 3的基础知识

    (例如npm build时或者是yarn build时) 本文将通过以下TODO的项目示例来让大家更加直观的了解这个框架: 项目的功能概览 1.当没有待办事项时,该应用会向我显示一个占位符 2.当我单击添加没有值的待办事项时...4.我可以看到我有多少个待办事项的摘要,以及完成了多少个待办事项 5.我可以通过单击Todos复选框,将其标记为已完成或撤消来删除它们 设置 与其它框架不同的是,Svelte 没有cli脚手架工具来帮助我们快速构建一个项目...,从这里,我们可以在svelte上下文之外将它们提供给我们的组件,因为它没有父级对象。...它可以在如图所示的一行中显示,也可以作为块语句显示,并且如果其中包含的任何变量发生更改,它将重新评估或重新运行,因此在这一行中,我们仅计算完成的待办事项数。 ?...所以,在我们的components文件夹中创建一个TodoItem.svelte文件,并且执行以下步骤: 导出一个变量,就像您在App.svelte中看到的todo那样 用todo.done 添加一个div

    1.8K30

    TO-do api

    第3章:Todo API 在接下来的两章中,我们将构建一个Todo API后端,然后将其与React前端连接。...api/有所有待办事项的列表位于空字符串 '',即。 每个待办事项都将在其主键上可用,这是Django在每个数据库表中自动设置的值。 第一个条目是1,第二个条目是2,依此类推。...从我们的todos / urls.py文件中调用,我们有两条路线,因此有两个不同的视图。 我们将使用ListAPIView显示所有待办事项,并使用RetrieveAPIView显示单个模型实例。...image-20200916123533730 该页面显示了我们先前在数据库模型中创建的三个待办事项。 API终结点称为集合,因为它显示多个项目。 我们的可浏览API可以做很多事情。...在“列表待办事项”下显示GET / api /,它告诉我们我们在此端点上执行了GET。 下方显示的是HTTP 200 OK,这是我们的状态代码,一切正常。

    3.6K31

    分享一些你可能还没使用的 JavaScript 技巧

    虽然像 react-charts 这样的包要求以对象结构的方式提供数据,但 react-charts 的实现要求以键分组的格式提供数据,所以我看到大多数开发人员使用 .forEach() 方法或错误地使用...[todo.userId].push(todo); } else { // 如果还没有该用户ID的待办事项数组,创建一个新的数组并添加当前待办事项 todosForUserMap...(accumulator[todo.userId]) accumulator[todo.userId].push(todo); // 否则,在累加器中创建一个新的数组,并将待办事项添加到该数组中...它与forEach()类似,但我建议使用这种方式,因为它更加简洁易懂。...url.search = params.toString(); // 返回构建完成的 URL 字符串 return url.toString(); } 通过这种方式,您可以在同一个文件中处理复杂的

    21820

    Redux 包教包会(二):趁热打铁,重拾初心

    你会发现它还只可以添加新的待办事项,对于 “完成和重做待办事项” 以及 “过滤查看待办事项” 这两个功能,目前我们还没有使用 Redux 实现。...在这一小节中,我们将使用 Redux 重构 “完成和重做待办事项” 功能,即你可以通过点击某个待办事项来完成它。...小结 在本节中,我们介绍了开发 Redux 应用的最佳实践,并通过重构 "完成和重做待办事项“ 这一功能来详细实践了这一最佳实践。...小结 在本节中,我们介绍了开发 Redux 应用的最佳实践,并通过重构 "过滤查看待办事项“ 这一功能来详细实践了这一最佳实践。...保存修改的内容,打开浏览器,可以照样可以操作所有的功能,你可以加点待办事项,点击某个待办事项以完成它,通过底部的三个过滤按钮查看不同状态下的待办事项: ?

    2.3K40

    React入门实战实例——ToDoList实现

    图2.1 2.右击Code文件夹,在选项卡中选择在终端中打开; ? 图2.2 3.在终端中输入如下命令,新建React项目: create-react-app todo-list ?...图2.5 三、实现过程 3.1 创建组件ToDoList 在components文件夹下新建ToDoList.jsx文件,编写如下代码,搭好一个组件的基本框架;代码如下: //导入React相关依赖...和已办事项列表;在render中的return中编写(jsx); render(){ return( <...图3.1 3.功能实现 添加待办事项 (1)使用ref属性,获取input输入值:   在input标签上设置属性ref="inputToDo",然后在方法中可以通过 this.refs.inputToDo.value...视频3.2 删除事项 删除事项比较简单了,思路也是类似的,在button上添加onClick按钮,触发删除事件,传入参数index,然后根据index,使用数组的splice函数,删除某一待办事项

    1.5K41

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

    作者 | Sunil Sandhu 译者 | 王强 策划 | 小智 几年前,我决定试着分别在 React 和 Vue 中构建一个相当标准的 To Do(待办事项)应用。...记住这一点,接下来让我们看一下它们的文件结构: ? 你会发现它们的结构也几乎相同。唯一的区别是 React 应用有两个 CSS 文件,而 Vue 应用没有任何 CSS 文件。...这是因为在 create-react-app 中,默认每个 React 组件都会附带一个单独文件来保存其样式,而 Vue CLI 用单一的文件来为默认组件包含 HTML、CSS 和 JavaScript...它的工作机制基本上是这个样子: 假设我们要创建一个待办事项列表,我们可能需要创建一个名为 list 的变量,它可能需要接收一个由字符串或对象组成的数组(比如说给每个 todo 字符串一个 ID 或其他一些东西...我们如何创建新的待办事项?

    4.8K30

    Microsoft To-Do,简约还是简陋?

    在“添加代办事项”位置输入要添加的待办事项,添加后点击待办事项前的圆点标记为完成: ? 双击待办事项可编辑标题、内容并添加提醒: ? 添加清单并将待办事项加入到清单中: ?...将所有元素按功能或其它原则分类,视觉上会变得整齐有序,有助于用户迅速找到它。 To-Do将用户最为关注的待办事项组织到“我的一天”中,在打开应用后首先就能看到当前应该完成的待办事项。...运动手环几乎没有按键,也没有屏幕,它的所有操作都依赖于与它进行蓝牙连接的手机。...当您每天打开 To-Do的时候,您将看到一个全新的“我的一天”。您可以通过智能建议来快捷地安排您的今天的待办事项,或者在“我的一天”中直接创建新的待办事项。...所有“我的一天”中输入的待办事项将被储存在“待办事项”中。如果您今天没有完成“我的一天”中所有的待办事项,请不要担心!我们将继续对它们追踪并于第二天在“建议”中提出。

    1.5K20

    27 个提升开发幸福度的 VsCode 插件

    它将引导咱们访问一个新创建的.json文件,可以使用该文件来构建使用TypeScript 的 React 应用程序。...TODO Highlight 如果习惯在应用程序代码中编写待办事项的开发者,可以安装 TODO Highlight 这样的扩展名对于突出显示整个项目中设置的待办事项非常有用。 ? 9....Import Cost Import Cost 可以显示咱们在VS代码编辑器中导入的程序包的大小。 ? 10....GraphQL for VSCode GraphQL一直在发展,咱们经常可以在 JS 社区中看到它的身影。因此,最好开始考虑在 VSCode中安装 GraphQL for VSCode。 ? 13....Todo Tree Todo Tree 将帮助咱们找到在整个应用程序代码中创建的所有待办事项。它将把它们放到一个单独的树中,还可以在面板的左侧同时查看它们 ? 19.

    2.1K30

    用纯 JavaScript 撸一个 MVC 框架

    最后我们会将待办事项存储在 local storage 中,以使其成为半永久性的,但现在只要刷新页面,todo 就会刷新。 我们可以看到,该模型仅处理并修改实际数据。...由于没有 React 的 JSX 或模板语言的帮助,在普通的 JavaScript 中执行此操作,因此它将是冗长和丑陋的,但这是直接操纵 DOM 的本质。...我们只是没有办法连接它们,因为现在还没有事件监视用户进行输入,也没有处理这种事件的输出的 handle。 控制台仍然作为临时控制器存在,你可以通过它添加和删除待办事项。 ?...响应模型中的回调 我们还遗漏了一些东西:事件正在侦听,handler 被调用,但是没有任何反应。这是因为模型不知道视图应该更新,并且不知道如何更新视图。...在更复杂的程序中,可能对不同的事件有不同的回调,但在这个简单的待办事项程序中,我们可以在所有方法之间共享一个回调。

    3.3K41

    Redux 包教包会(一):解救 React 状态危机

    我们将首先给出了一个使用 React 实现的待办事项小应用[4](比上篇教程[5]中完成的版本多了筛选的功能),它将是我们学习 Redux 的起点,当你熟悉了这份初始代码,并了解了它的功能之后,你就可以关闭它...探索初始代码 我们完成的这个待办事项小应用比上篇教程[11]中实现的要高级一点,如下面这个动图所示: ?...保存修改的内容,我们在待办事项小应用的输入框里面输入点内容,然后点击 Add Todo 按钮,我们发现,之前的错误没有再次出现。...•dispatch(action) 用来在 React 组件中发出修改 Store 中保存状态的指令。在我们需要新加一个待办事项时,它取代了之前定义在组件中的 onSubmit 方法。...在我们需要新加一个待办事项时,它取代了之前定义在组件中的 this.setState 操作。

    1.8K20

    使用 React 与 Vue 创建同一款 App,差别究竟有多大?

    于是我意识到必须自己动手来比较 Vue 与 React 之间的异同。在我自力更生的过程中,我用这篇文章记录下了具体过程。 目标 我将会构建一个标准的待办事项应用程序,允许用户添加和删除列表中的项目。...考虑到这一点,我们来看看这两个应用程序的文件结构: 你会发现它们的结构几乎完全相同。唯一的区别在于 React App 拥有三个 CSS 文件,而 Vue App 中没有 CSS 文件。...这是因为 React 的 create-react-app 组件需要一个附带文件来保存其样式,而 Vue CLI 采用全包方法,其样式在实际组件文件中声明。...然后,这将触发父组件中的函数。删除待办事项一节中详细介绍了整个过程。 Vue 的实现方法 在子组件中我们只需编写一个函数,将一个值发送回父函数。...在父组件中编写一个函数来监听子组件何时发出该值的事件,监听到事件之后触发函数调用。同样,删除待办事项一节中详细介绍了整个过程。

    5.3K10

    为什么用 Svelte 写一个小程序如此快速?我用10分钟就搞定了!

    注意,我们在Angular或Vue 2中发现的这种上下文缺少,或者在Vue 3中缺少特殊值对象,或者在React中缺少setState。在这种情况下,Svelte不需要额外的语法来知道变量已经更新。...在解析过程中,它能够看到像newBook这样的变量在模板中被使用,所以对它的赋值将导致重新呈现。...例如,将一个待办事项的显示拆分为一个单独的组件是有意义的,因为我们将添加一些功能,如就地编辑名称或将其标记为已完成。将所有这些都放在一个组件中,随着时间的推移将变得难以维护。...幸运的是,使用其他组件就像从另一个Svelte文件中导入它作为默认导入一样简单,并以类似于我们已经看到的常规DOM元素的方式与它交互。 另一个例子是待办事项的管理。...目前还没有一家大公司像支持Angular和React那样支持Svelte的整个开发,但Vue已经表明这不是问题。此外,正如一开始所说的,《svelte》的作者Rich Harris现在正在全职开发。

    2.9K10

    10 款 提升工作效率的VSCode 扩展

    顾名思义,Auto Rename Tag可以在一个标签更改时自动更新另一个标签: 这款扩展不仅可以在HTML中使用,也可用于React,因为React使用了JSX: 上述示例中标签内只有一个文本,但是在真正的应用程序中.../Redux/GraphQL/React-Native snippets Vue 3 Snippets 例如,在React中创建新组建时,输入函数式组件的语法非常繁琐。...表示询问和问题 // 表示删除 TODO 表示待办事项 Markdown All in One MarkdownAll in One可以处理所有的markdown需求,例如自动预览、快捷键、自动完成等...图标 描述性的图标可以帮你区分不同的文件和文件夹。图标也让开发过程更有趣。 下面是两个VSCode标签页的比较。一个有图标,另一个没有。 有许多图标扩展可供选择。...Import Cost Importcost可以在代码中显示导入的估计大小。编写项目时,很重要的一点就是不要导入过大的软件包,以免损害用户体验。

    1.8K30

    React Native基础&入门教程:以一个To Do List小例子,看props和state

    它是一个ToDo List,也就是待办列表。大概长下面这个样子: ? To Do List草图 我们把它分为两个页面。最左边是添加待办事项的界面,记为ToDoListAdd。...这里我们暂时没有处理它。 步骤2,初步创建ToDoListMain组件。当开始构思这个组件的时候,至少有两件事情是需要考虑的: 待办事项的数据源,应该来自那里?显示和隐藏底部的状态存应该在哪里?...在里面我们看到RN中设置state的正确方式是调用this.setState方法。 另外,为了演示方便,这里使用官方提供的Checkbox组件来表示待办事项是否check了。...我们暂时只是使用它来简单显示待办列表。 每一个待办事项使用了自定义的另一个组件ToDoListItem,我们马上来看看它。 步骤3,实现ToDoListItem组件。...它没有自己的状态,也只是对父组件内容的展示。

    1.6K30
    领券