ent*_*one 12 reactjs react-context react-hooks react-query
在react-query的快速入门文档中,有以下示例:
// Create a client
const queryClient = new QueryClient();
const App = function () {
return (
// Provide the client to your App
<QueryClientProvider client={ queryClient }>
<Todos />
</QueryClientProvider>
);
};
const Todos = function () {
// Access the client
const queryClient = useQueryClient();
// ...
return (
<>
...
</>
);
};
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么我应该在 Todos 中使用 useQueryClient 挂钩。
// Access the client
const queryClient = useQueryClient();
Run Code Online (Sandbox Code Playgroud)
我的意思是我不能queryClient从主文件中导出实例:
// App.js
export const queryClient = new QueryClient();
Run Code Online (Sandbox Code Playgroud)
然后立即将其导入到 Todos 中?
// Todos.js
import { queryClient } from './App';
Run Code Online (Sandbox Code Playgroud)
我问这个的原因是因为我想使用除了react之外的queryClient实例(可能在另一个库的侦听器函数内),并且我想知道是否只能从react钩子访问它(为了不弄乱某些东西) up)那么我将无法以其他方式使用它。
useQueryClient首选的原因主要有以下三个:
useQueryClient从 Provider 获取最近的 QueryClient。所以无论如何你都需要创建Provider。小智 0
QueryClientProvider是一个 React 上下文提供者。在 React 中,您可以通过钩子访问上下文,因为没有保证的通用上下文。该钩子返回来自调用者组件的祖先的最直接的上下文。
您无法导出它,App.js因为它上面没有QueryClientProvider。你可以解决它。但这也行不通。您只能在组件内调用挂钩,而不能从组件内部导出某些内容。根据您的实施情况,每个请求也可能重新呈现整个站点。
总的来说,这似乎是一个坏主意。
| 归档时间: |
|
| 查看次数: |
12832 次 |
| 最近记录: |