React 内存泄漏:useCallback 和闭包如何对你造成影响

2024 年 3 月 3 日 我工作在 兰布尔,一家 AI 初创公司,我们为视频注释构建复杂的 React 应用程序。我最近遇到了一个复杂的内存泄漏,它是由 JavaScript 闭包和 React 的 useCallback 钩子。由于我有 .NET 背景,所以我花了很长时间才弄清楚到底发生了什么,所以我想分享一下我所学到的东西。 我对闭包进行了简要的复习,但如果你已经熟悉它们在 JavaScript 中的工作方式,请随意跳过该部分。 简要回顾一下闭包 闭包是 JavaScript 中的一个基本概念。它们允许函数记住函数创建时范围内的变量。这是一个简单的例子: function createCounter() { const unused = 0; // This variable is not used in the inner function let count = 0; // This variable is used in the […]

吹牛老爹对 Cassie Ventura 的残酷攻击出现在 2016 年视频中,Aubrey O'Day 和 50 Cent React

在美国有线电视新闻网 (>) 发布这段视频后,奥戴发帖称:“我能想象,画面对你们来说越来越清晰了。” 视频 迪迪的 殴打前女友 卡西·文图拉 2016年在洛杉矶一家酒店发布的 美国有线电视新闻网。 该媒体周五发布了这段视频,显示文图拉于 2016 年 3 月 5 日走向世纪城洲际酒店的电梯。随后,只穿着一条毛巾的迪迪在走廊里追赶她,然后打了她,把她扔了出去。将她按倒在地并反复踢她。 然后他试图将她拖走,随后有人看到她试图拨打酒店电话。 然后他似乎扔了一个花瓶。 这与卡西在现已和解的针对迪迪的诉讼中详细描述的说法相符,她在诉讼中声称,当她“跑到电梯逃跑”时,迪迪向她扔了这些东西。 2016 年的一段视频显示,“吹牛老爹”肖恩·库姆斯 (Sean “Diddy” Combs) 在一场争吵中袭击了当时的女友卡西·文图拉 (Cassie Ventura),这与现已和解的诉讼中的一些指控相符 https://t.co/fYUQ2z2MYN — 美国有线电视新闻网 (@>) 2024 年 5 月 17 日 @> 她的诉讼中写道:“2016年3月左右,在洛杉矶世纪城洲际酒店的一场家庭聚会中,库姆斯先生喝得酩酊大醉,猛击文图拉女士的脸,把她的眼睛打肿了。” “文图拉女士睡着后,试图离开酒店房间,但当她离开时,库姆斯先生醒了,开始对文图拉女士尖叫。他跟着她走进酒店的走廊,一边对她大喊大叫,”报道继续说道。 。 “他抓住了她,然后拿起走廊上的玻璃花瓶扔向她,导致她跑向电梯逃跑时周围的玻璃碎裂。” 当时,吹牛老爹通过他的律师发表了一份声明,称他“强烈否认这些令人反感和无耻的指控”。 就在文图拉去年 11 月提起诉讼的一天后,她和吹牛老爹达成和解,双方发表声明称他们“友好地”解决了此事。 TMZ。 尽管他们和解了, 很多人挺身而出 在卡西提起诉讼后,他们对吹牛老爹提出了令人不安的指控——他也否认了这一指控——并已成为联邦调查的焦点。 尽管卡西本人没有对这段视频发表评论,但她的律师告诉美国有线电视新闻网,“这段令人痛心的视频进一步证实了库姆斯先生的令人不安和掠夺性的行为。言语无法表达文图拉女士在来访时所表现出的勇气和毅力。”期待将此事曝光。” Diddy 的代表尚未对该视频发表评论。 盖蒂 50 […]

React 编译器和 React 19

React 19 和 React Compiler(以前称为 React Forget)在过去一个月一直主导着 React 讨论。 我们都在失去理智(以一种好的方式),因为我们可能很快就不必考虑 React 中的记忆化了。 但这是真的吗? 我们是否应该开始忘记 memo, useMemo, 和 useCallback 在接下来的几个月里? 当 React 编译器发布时,实际上发生了什么变化?之后我们应该学习和教授 React 哪些内容? 让我们来看看。 让我们先来说说最重要的事情:记忆不会很快消失,所以暂时不要忘记它。 React 19 不是 React 编译器。 React 团队宣布了编译器 同一篇博文 他们宣布即将发布 React 19,每个人都兴奋地得出结论。 然而,React 团队成员的一条推文澄清了这种困惑: 在 React 19 中,我们将看到许多新功能,但我们必须等待编译器一段时间。 目前尚不清楚需要多长时间,但根据另一位 React 核心团队成员的另一条推文,这可能会在今年年底发生。 就我个人而言,我对这个时间表持怀疑态度。 如果我们看一下演讲 React 团队成员 介绍了编译器及其时间表,我们正处于编译器旅程的中间: 日记从 2021 年开始, 两年前。 […]

高级 React 架构师(React.js、MobX)

✨ 关于我们 ✨ 照相馆 被 Y Combinator 接纳后于 2020 年推出,在过去 4 年里已成为全球最受欢迎的 AI 照片编辑器。 我们的使命很明确:通过精彩的摄影提升业务。 Photoroom 通过我们强大的创新功能,从一流的背景去除器到生成式 AI 模型和工具:AI 图像、AI 背景和阴影、AI Expand 等,将精彩图像的力量交到更多人手中。 Photoroom 每年处理超过 50 亿张图像,下载量超过 1.5 亿次,现已成为世界排名第一的人工智能照片编辑应用程序,可在 180 多个国家/地区通过移动设备、网络和 API 进行使用。 我们正处于旅程中激动人心的阶段,已成功筹集了 B 轮融资,并希望在 2024 年将规模扩大到 1 亿美元的 ARR。 Photoroom 是一家盈利的、适合远程办公的公司,总部位于巴黎,其全球团队由 50 多名具有世界领先公司背景的世界级深度学习、产品和营销专家组成。 我们是一个多元化的企业家团队,为企业家而建。 长话短说 🤓 我们正在寻找一位技术精湛、经验丰富、专门从事前端架构的高级 Web 前端工程师加入我们的团队。 在此职位中,您将负责设计和实施可扩展的高性能 Web 应用程序,以提供卓越的用户体验。 您的专业知识 […]

2024 年如何启动 React 项目

每年我都会向您简要概述如何开始一个新的 React 项目。 我想反思一下优点和缺点、作为开发人员所需的技能水平,以及每个入门项目必须为 React 开发人员提供哪些功能。 最后您将了解针对不同需求的 3 种解决方案。 注:截图为去年的截图 JavaScript 的现状,因为最新的结果还没有上线。 与 Vite 反应 迅速地 是最流行(现已弃用)React 启动程序 create-react-app (CRA) 的明显继承者,因为它与它没有太大的偏差。 与 CRA(使用 Webpack)相比,它要快得多,因为它使用 esbuild 在引擎盖下。 Vite 更倾向于使用客户端路由/渲染而不是服务器端渲染(SSR)来创建单页应用程序(SPA)。 然而,由于 SSR 如今正成为一个更重要的话题,因此 Vite 中可以选择加入 SSR 功能。 当来自 create-react-app (CRA) 时,它是一个简单的 迁移至Vite。 选择加入功能,例如 打字稿、SVG 和 SSR 距离 Vite 的配置仅几步之遥 vite.config.js 文件,除了功能特定文件(例如 tsconfig)。 Vite with React 允许开发者在没有固执己见的框架的情况下使用 React。 […]

在 SonarQube 中升级到 React 18 的经验教训

这 声纳Qube 接口写在 反应 我们最近经历了从版本 17 升级到 18 的过程。为了给您提供更多信息,该应用程序也是用 打字稿 和用途 是 和 反应测试库 (RTL)进行测试。 我们想分享我们在进行升级时面临的三个最大问题以及我们吸取的教训。 简而言之,他们是: 一些 TypeScript 类型发生了变化 React 测试库也必须更新 React 18 带来了重大变化 让我们来了解一下这些意味着什么以及我们如何处理它们。 注:本文由 SonarQube 前端团队 David Cho-Lerat、Ambroise Christea 和 Philippe Perrin 共同撰写。 TypeScript 类型更改 React 18 升级指南 指出两者 @types/react 和 @types/react-dom 必须在升级时进行更新,“最显着的变化是 children 现在在定义 props 时需要明确列出 props。” 这次更新的好消息是 塞巴斯蒂安·西尔伯曼来自 React 核心团队,维护着 […]