Loading...
Loading...
Compare original and translation side by side
// WRONG - races with React
render(<Dashboard />);
const element = screen.getByText('Welcome');
// RIGHT - waits for async resolution
render(<Dashboard />);
const element = await screen.findByText('Welcome');const TestProviders = ({ children }) => (
<QueryClientProvider client={testQueryClient}>
<AuthProvider>
{children}
</AuthProvider>
</QueryClientProvider>
);// 错误写法 - 会与React执行顺序冲突
render(<Dashboard />);
const element = screen.getByText('Welcome');
// 正确写法 - 等待异步操作完成
render(<Dashboard />);
const element = await screen.findByText('Welcome');const TestProviders = ({ children }) => (
<QueryClientProvider client={testQueryClient}>
<AuthProvider>
{children}
</AuthProvider>
</QueryClientProvider>
);render(<Component />);
screen.debug(); // See actual DOMwaitFor(() => {...}, { timeout: 3000 })render(<Component />);
screen.debug(); // 查看实际DOMwaitFor(() => {...}, { timeout: 3000 })| Phase | Target |
|---|---|
| Skeleton render | 0-16ms (1 frame) |
| First data paint | <100ms |
| Full interactive | <200ms |
| Lazy widgets | <500ms |
| 阶段 | 目标 |
|---|---|
| 骨架屏渲染 | 0-16ms(1帧) |
| 首次数据渲染 | <100ms |
| 完全交互状态 | <200ms |
| 懒加载组件 | <500ms |
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000, // 5min
cacheTime: 30 * 60 * 1000, // 30min
refetchOnWindowFocus: false,
refetchOnMount: false,
retry: 1,
},
},
});const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000, // 5分钟
cacheTime: 30 * 60 * 1000, // 30分钟
refetchOnWindowFocus: false,
refetchOnMount: false,
retry: 1,
},
},
});function Dashboard() {
const { data, isLoading } = useQuery('dashboard', fetchDashboard);
// Show skeleton immediately, no loading check
return (
<div>
{data ? <RealWidget data={data} /> : <SkeletonWidget />}
</div>
);
}function Dashboard() {
const { data, isLoading } = useQuery('dashboard', fetchDashboard);
// 立即显示骨架屏,无需检查加载状态
return (
<div>
{data ? <RealWidget data={data} /> : <SkeletonWidget />}
</div>
);
}screen.debug()screen.debug()