Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Support for React.cache function

未关闭
#1,407 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清

调研方向

首先,使用 React、Node 20 或 22、Vitest 或 Jest 以及 jsdom 运行提供的 testCached.tsx、TestComponent.tsx 和 TestPage.tsx 复现。检查 package.json 的支持范围,然后确定 React.cache 是否可以在此测试环境中得到支持,或者是否需要记录关于 mocking 的指导;当复现通过,或限制已得到明确记录时,即视为完成。

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

描述

Relevant code or config:
// testCached.tsx
import { cache } from 'react';

export default cache((data: number) => {
  return Math.random() * data;
});
----------------------------------------------------------------------
// TestComponent.tsx
import myCachedFunction from "./testCached";
import React from "react";

export const TestComponent = () => {
  return (
    <div>
      <p data-testid="cached-value-component">{myCachedFunction(200)}</p>
    </div>
  );
};
----------------------------------------------------------------------
// TestPage.tsx
import { TestComponent } from "./TestComponent";
import myCachedFunction from "./testCached";
import React from "react";

export function TestPage() {
  return (
    <div>
      <p data-testid="cached-value-page">{myCachedFunction(200)}</p>
      <TestComponent />
    </div>
  );
}
----------------------------------------------------------------------
// Testfile
it("Should use the cached value", () => {
  render(<TestPage />);
  expect(screen.getByTestId("cached-value-page").textContent).toEqual(
    screen.getByTestId("cached-value-component").textContent
  );
});
What you did:

We are using the React.cache function but cannot get it to work in tests.

What happened:

In tests, it does not use the cache but simply returns a new value for each call. When running the above code in nextjs 14 it works as expected and returns the cached value instead of a new value displaying the same value in TestComponent and TestPage.

For example the tests return:

Expected: "158.69893572775896"
Received: "45.853220887195164"

Also worth mentioning i experimented with different solutions, for example some in this issue, but ended up having it mocked.

Reproduction:
Problem description:
Suggested solution:

It should work as expected, or at least mention in docs to mock it

主要语言
JavaScript
星标
19.7k
派生
1.2k
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

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

testing-library/react-testing-library 的其他 Issue

查看 testing-library/react-testing-library 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

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