使用create-react-app脚手架创建的React前端项目,在函数式组件中使用useEffect加载接口数据时 发现一个奇怪的问题:刷新页面接口调用了两次!!。
代码分析
useEffect(() => {
const wrapper = async () => {
await fetchData();
}
wrapper().then(r => {});
}, [param])
在 React Hooks: useEffect() is called twice even if an empty array is used as an argument 找到了答案。
原因是开发环境使用了React严格模式,代码编译后在正式环境不会出现这样的问题。
如果在开发环境不想出现这种情况,可以在index.tsx中找到下面的代码:
root.render(
<React.StrictMode>
<RouterProvider router={router}/>
</React.StrictMode>
);
修改为:
root.render(
<RouterProvider router={router}/>
);
问题解决。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。