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

【React】1935- 来看看 SWR 如何用 React Hook 实现优雅请求

SWR[1] 是 Next.js 背后的团队 vecel 开源的一个 用于数据请求的 React Hooks 库 官方介绍:“SWR” 这个名字来自于 stale-while-revalidate:一种由.../oiloil 这个接口的数据,当我们在组件中使用 hook 的时候就直接发送了请求,如果我们后面需要重复请求可以直接调用 reload 方法,而且通过 !...&& {/* ...省略弹窗实现 */}; }; 分析一下,这里我们在页面和 Modal 组件中都使用了 SWR 请求同一个数据,当页面渲染时,Modal 组件中的 useSWR...这里需要注意一下,在 React 官方文档中提到了 hooks-rules[4] : 不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层以及任何 return 之前调用他们...这个规则其实与上述的例子没有太大关联,React 文档中的规则是为了 避免 state 混乱,而上面的例子则是告诉大家 调用 useSWR 要尽量在同一个时机以避免重复请求 ,大家不要混淆了。

1K10

【送红宝书】JavaScript 测试系列实战(四):掌握 React Hooks 测试技巧

「为了回馈图雀社区的读者,图雀酱特地挑选了几本书籍送给大家,文末有送书活动详情哦~」 React Hooks 作为复用共同业务逻辑的强大工具,已经在开源库和业务代码中得到了广泛的使用。...所幸,由于测试 React Hooks 的需求非常普遍,因此就有了测试 Hooks 的神器:react-hooks-testing-library。...提示 如果你不熟悉 React Hooks 相关的知识,推荐先学习我们的 React Hooks 相关实战教程。...在之前 useModalManagement 钩子的测试代码中,我们仅仅只测试了调用 Hook 时不会报错。...实际上,我们还希望测试以下用例: 默认渲染一个关闭的模态框 当调用 openModal 函数时,能够打开模态框 我们来看看新的测试代码: // src/useModalManagement.test.js

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

    【React】633- 使用 Hooks 优化 React 组件

    不过我们知道 JS 中的继承本质上还是通过原型链实现的语法糖,所以在一些场景使用上没有其它语言的继承那么方便,例如无法直接实现多继承,多继承后的跨层级方法调用比较麻烦,适合简单的逻辑复用。...Render Props 术语 “render prop” 是指一种在 React 组件之间使用一个值为函数的 prop 共享代码的简单技术 via: Render Props 它的本质实际上是通过一个函数...子组件继承后自行绑定父类的一些方法即可,在这点上理解起来有点晦涩,看起来总像是绑定了一些“不存在”的方法。 React Hooks 针对上面提出的问题,有没有什么方法可以解决呢?...我们先简单的了解下什么是 Hooks,它允许我们在不编写 class 的情况下使用 state 和 React 生命周期等相关特性。...为了在无状态的函数组件中创造去有状态的 Hooks,势必是需要通过副作用将每个 Hooks 缓存在组件中的。而我们没有指定 id 之类的东西,React 是如何区分每一个 Hooks 的呢?

    1.2K10

    React组件设计实践总结04 - 组件的思维

    目的高阶组件差不多: 都是为了分离关注点, 对组件的逻辑进行复用; 在使用和实现上比高阶组件要简单, 在某些场景可以取代高阶组件....官方在’动机‘上就说了: 很难在组件之间复用状态逻辑: 问题: React 框架本身并没有提供一种将可复用的逻辑注入到组件上的方式/原语....一些注意事项: 只能在组件顶层调用 hooks。...不要在循环,控制流和嵌套的函数中调用 hooks 只能从 React 的函数组件中调用 hooks 自定义 hooks 使用 use*命名 总结 hooks 的常用场景: 副作用封装和监听: 例如 useWindowSize...在大多数情况下,组件不应以不同方式处理初始渲染和更新流程。这使它能够适应逻辑上的变化。 读者可以看一下awesome-react-hooks, 这些开源的 hook 方案都挺有意思.

    2.3K20

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

    大家好,上一篇文章我们学习了 State Hook 的基础用法,还没看的同学们,小编建议你先看下《 React Hooks 学习笔记 | State Hook(一)》这篇文章,今天我们一起来了解 useEffect...当你调整窗口大小,您应该会看到自动更新窗口的宽和高的值,同时我们又添加了组件销毁时,在 componentWillUnmount() 函数中定义清除监听窗口大小的逻辑。...,数据状态发生变化,会重新调用 useEffect Hook 中的请求逻辑,这样岂不是进入了无限循环,数据量大的话,说不定就把接口请求死了。...借助Firebase,应用开发者们可以快速搭建应用后台,集中注意力在开发 client 上,并且可以享受到 Google Cloud 的稳定性和 scalability )。 ?...如果删除过程中发生错误,我们在catch 代码块里捕捉错误并调用错误提示对话框(更新错误状态和加载状态)。

    8.3K30

    【面试题】412- 35 道必须清楚的 React 面试题

    这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。 问题2:类组件和函数组件之间的区别是啥?...componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM 的操作或状态更新以及设置事件监听器。...componentWillUnmount:它用于取消任何的网络请求,或删除与组件关联的所有事件监听器。 问题 16:这三个点(…)在 React 干嘛用的?...Hooks 允许咱们在不改变组件层次结构的情况下重用有状态逻辑,这样在许多组件之间或与社区共享 Hooks 变得很容易。 问题 19:React 中的 `useState()` 是什么?...主题: React 难度: ⭐⭐⭐⭐ 当应用程序在开发模式下运行时,React 将自动检查咱们在组件上设置的所有 props,以确保它们具有正确的数据类型。

    4.3K30

    2022高频前端面试题(附答案)

    componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM 的操作或状态更新以及设置事件监听器。...componentWillUnmount:它用于取消任何的网络请求,或删除与组件关联的所有事件监听器。描述事件在 React中的处理方式。...React实际上并没有将事件附加到子节点本身。而是通过事件委托模式,使用单个事件监听器监听顶层的所有事件。这对于性能是有好处的。这也意味着在更新DOM时, React不需要担心跟踪事件监听器。...修改由 render() 输出的 React 元素树使用 React Hooks 好处是啥?...该函数会在setState设置成功,且组件重新渲染后调用。合并nextState和当前state,并重新渲染组件。setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。

    2.4K40

    35 道咱们必须要清楚的 React 面试题

    这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。 问题2:类组件和函数组件之间的区别是啥?...componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM 的操作或状态更新以及设置事件监听器。...componentWillUnmount:它用于取消任何的网络请求,或删除与组件关联的所有事件监听器。 问题 16:这三个点(...)在 React 干嘛用的?...问题 18:什么是 React Hooks? 主题: React 难度: ⭐⭐⭐ Hooks是 React 16.8 中的新添加内容。它们允许在不编写类的情况下使用state和其他 React 特性。...主题: React 难度: ⭐⭐⭐⭐ 当应用程序在开发模式下运行时,React 将自动检查咱们在组件上设置的所有 props,以确保它们具有正确的数据类型。

    2.6K21

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

    的使用场景 06 使用 react 实现一个通用的 message 组件 07 如何使用 react hooks 实现 useFetch 请求数据 更多描述: 比如设计成 `useFetch` 这种形式...() message.success() 14 react hooks 中如何模拟 componentDidMount 在 useEffect,把第二个参数即依赖的状态,设置为 [] useEffect...时,还未挂载,代码仍然在服务器中执行,此时没有浏览器环境,因此此时访问 localStorage 将会报错 16 react hooks 如何替代或部分替代 redux 功能 我们把全局store分为两块...和 useEffect 或者其它 hooks 的一个普通函数 18 在 react/vue 中数组是否可以以在数组中的次序为 key 19 React 中 fiber 是用来做什么的 20 React...React 项目中 immutable 是优化性能的 28 在 redux 中如何发送请求 29 在 redux 中如何写一个记录状态变更的日志插件 30 在 setState 时发生了什么 31 如何设计一个

    1K30

    【React总结(二)】使用 Render props 复用代码

    导语 在 React 当中,我们为了代码的复用,我们通常会封装一个组件。 一个组件通常会包含组件的内容样式组成的业务逻辑。...是指一种在 React 组件之间使用一个值为函数的 prop 在 React 组件间共享代码的简单技术。 官方文档说的非常的晦涩。...其实说白了,就是在父组件有个 render 的属性,然后 render 属性你可以理解为一个回调函数,父组件通过调用 render 方法,把父组件里面的数据(一般是 state )带出来让业务组件使用,...其实 React hooks 已经 React 16.8 中稳定发布,大家可以尝鲜使用。也可以看我之前写得文章了解 hooks 是什么?...理解 React Hooks 系列文章 【React总结(一)】浅谈 React 中 key

    1.7K120

    react源码解析18事件系统

    代码也很简单,模拟一个modal框,点击显示出现,点击其他地方,相当于点击了mask,modal消失,因为react事件都是委托到上层,所以需要在handleClick阻止冒泡,这样点击显示的时候不会触发...document上的事件回调,导致modal无法显示。...但是在react16上发现这样做还是不行,需要调用e.nativeEvent.stopImmediatePropagation()才能实现,而react17上没什么影响 究其原因就是react16和17...在委托事件的容器上做出了改变,react16的事件会冒泡的document上,而17则会冒泡到root容器上,也就是ReactDom.render的第二个参数 export default class...} ); } } 大家也可以看下demo_11、demo_12在react16、17触发顺序有何差异,同时demo项目中的event.html也模拟了react16

    47830

    React 代码共享最佳实践方式

    ; 不同mixin里的命名不可知,非常容易发生冲突; 可能产生递归调用问题,增加了项目复杂性和维护难度; 除此之外,mixin在状态冲突、方法冲突、多个生命周期方法的调用顺序等问题拥有自己的处理逻辑。...使用 HOC 的约定 在使用HOC的时候,有一些墨守成规的约定: 将不相关的 Props 传递给包装组件(传递与其具体内容无关的 props); 分步组合(避免不同形式的 HOC 串联调用); 包含显示的...Element,在组件内部通过调用该函数来完成渲染,那么这个组件就用到了render props技术。...类组件可以给我们提供一个完整的生命周期和状态(state),但是在写法上却十分笨重,而函数组件虽然写法非常简洁轻便,但其限制是必须是纯函数,不能包含状态,也不支持生命周期,因此类组件并不能取代函数组件。...而React团队觉得组件的最佳写法应该是函数,而不是类,由此产生了React Hooks。 React Hooks 的设计目的,就是加强版函数组件,完全不使用"类",就能写出一个全功能的组件。

    3.1K20

    Vue3 & React Hooks 新UI组件原理:Modal 弹窗

    React的Portal React Portal之所以叫Portal,因为做的就是和“传送门”一样的事情:render到一个组件里面去,实际改变的是网页上另一处的DOM结构。...在v16中,使用Portal创建Dialog组件简单多了,不需要牵扯到componentDidMount、componentDidUpdate,也不用调用API清理Portal,关键代码在 render...当然,我们作为一个React Hooks选手,不骚一下咋行。 2.1 热门组件库Ant Design中的实现 原本是想从Ant Design库中一窥究竟,却发现事情并不简单。。 ?...` 2.1 React Hooks版弹窗:useModal ? 步骤一:创建一个Modal组件 ? 步骤二:自定义useModal ? 很好理解,不懂的建议转行写Vue。 ? 步骤三:使用它 ?...「参考文章:」 《Building a simple and reusable modal with React hooks and portals》 《Vue 中的 Portal 技术 》 《Portal

    2.8K41
    领券