From d0e5e9f22e8db1b758f5a58965524451449f9b6b Mon Sep 17 00:00:00 2001 From: Xuan <97ssps30212@gmail.com> Date: Fri, 16 Jun 2023 12:01:59 +0800 Subject: [PATCH] feat: add useHydrate to support ssr --- src/__tests__/useHydrate.test.tsx | 49 +++++++++++++++++++++++++++++++ src/lib/hooks/index.ts | 1 + src/lib/hooks/useHydrate.ts | 8 +++++ 3 files changed, 58 insertions(+) create mode 100644 src/__tests__/useHydrate.test.tsx create mode 100644 src/lib/hooks/useHydrate.ts diff --git a/src/__tests__/useHydrate.test.tsx b/src/__tests__/useHydrate.test.tsx new file mode 100644 index 00000000..bfd7a17c --- /dev/null +++ b/src/__tests__/useHydrate.test.tsx @@ -0,0 +1,49 @@ +import { act, render } from '@testing-library/react'; +import { useAccessor, useHydrate } from '../lib'; +import type { Post } from './types'; +import { createPost, createPostModel, createPostModelControl, sleep } from './utils'; +import { renderToString } from 'react-dom/server'; + +describe('useHydrate', () => { + test('should hydrate successfully', async () => { + const onSuccessMock = vi.fn(); + const updateMock = vi.fn(); + const control = createPostModelControl({ onSuccessMock }); + const { getPostById, postAdapter, postModel } = createPostModel(control); + function Component({ postId }: { postId: number }) { + const { data } = useAccessor(getPostById(postId), postAdapter.tryReadOneFactory(postId), { + revalidateIfStale: false, + }); + + return