gpt4 book ai didi

reactjs - 为什么 React hook 与 fetch api 一起使用时会抛出 act 错误?

转载 作者:行者123 更新时间:2023-12-03 13:24:27 26 4
gpt4 key购买 nike

我不断收到Warning: An update to App inside a test was not wrapped in act(...).每当我发出 API 请求并更新状态时,都会在我的测试套件中。

我正在使用react-testing-library。我也尝试使用 ReactDOM test utils,得到了相同的结果。我尝试的另一件事是将容器包装在act中。 ,仍然得到相同的结果。

请注意:我的应用程序可以运行并且我的测试通过。我只需要知道我做错了什么,或者是否是react-dom 包中的错误导致了该错误的出现。模拟控制台错误并将其静音是很糟糕的。

global.fetch = require('jest-fetch-mock');

it('should clear select content item', async () => {
fetch.mockResponseOnce(JSON.stringify({ results: data }));

const { container } = render(<App />);

const content = container.querySelector('.content');

await wait();

expect(content.querySelectorAll('.content--item').length).toBe(2);
});

这是钩子(Hook)实现:

const [data, setData] = useState([]);
const [error, setError] = useState('');

const fetchInitData = async () => {
try {
const res = await fetch(API_URL);
const data = await res.json();

if (data.fault) {
setError('Rate limit Exceeded');
} else {
setData(data.results);
}
} catch(e) {
setError(e.message);
}
};

useEffect(() => {
fetchInitData();
}, [isEqual(data)]);

最佳答案

这是一个已知问题,请在 Github 中查看此问题 https://github.com/kentcdodds/react-testing-library/issues/281

关于reactjs - 为什么 React hook 与 fetch api 一起使用时会抛出 act 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com