reactjs / reactjs/react.dev

[Bug]: cache doesn't return the same refrence to a resolved promise

未关闭
#7,393 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

bug: unconfirmed
主要语言
JavaScript
星标
11.8k
派生
7.9k
平均合并
1 天 11 小时
30 天内合并 PR
11

描述

Summary

The cache function generates a new promise reference on every call, causing the use hook to treat it as a new dependency. This results in an infinite fetch loop as getData() is continuously invoked on each render.

Page

https://react.dev/reference/react/cache

Details

The following code demonstrates an issue with the cache function, which leads to an infinite fetch loop when used with use

'use client';
import { use, cache } from "react";

export const getData = cache(() => fetch("https://jsonplaceholder.typicode.com/posts").then(res => res.json()));

export function Home() {
    const data = use(getData());

    return (
        <pre>{JSON.stringify(data)}</pre>
    );
};
Problem

The cache function is expected to memoize the result of a function call. However, it appears to return a new promise reference every time getData() is called, which causes the use hook to treat it as a new input on every render. This results in an infinite fetch loop.

Expected Behavior

The cache function should return the same promise reference for the same input, ensuring that use(getData()) only triggers a single fetch request.

Actual Behavior

Maybe the cache function creates a new promise reference on each call, leading to an infinite loop of fetch requests.

Environment
React version: >=19 ("^19.0.0")

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从 cache 参考页面开始,复现提供的 use(getData()) 示例,以将文档中描述的行为与 React 19 进行比较。检查示例或其说明是否准确描述了相同输入的 promise identity;当报告的 infinite-fetch 行为得到解决,或文档清楚地解释了受支持的用法时,即视为完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
javascript, react
领域
documentation
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
38/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。