Next.js 13 - Cangkuk useHydrateAtoms Jotai menyebabkan ketidakpadanan UI
P粉548512637
P粉548512637 2023-08-29 15:28:26
0
1
643
<p>Bekerjasama dengan projek Next.js 13 menggunakan katalog aplikasi baharu dan jotai sebagai pengurus negeri global. Sekarang saya cuba menggunakan cangkuk <code>useHydrateAtoms</code> untuk menghantar keadaan awal kepada atom saya seperti yang ditunjukkan dalam dokumentasi rasmi, tetapi ini mengakibatkan ralat penghidratan. </p> <p>Berikut ialah versi ringkas bagi kod yang sedang digunakan, yang menghantar data yang diterima daripada komponen bahagian pelayan kepada komponen bahagian klien yang memanggil <code>useHydrateAtoms</code> useAtom</ code> Baca dan tulis daripada atom ini. </p> <h5>Komponen Pelayan (Halaman)</h5> <pre class="brush:php;toolbar:false;">const getData = async () => // ... } eksport fungsi async lalai Halaman() { data const = menunggu getData(); kembalikan <ChildComponent initialState={data} />; }</pre> <h5>Komponen pelanggan</h5> <pre class="brush:php;toolbar:false;">"gunakan klien"; fungsi eksport ChildComponent({ initialState }) { useHydrateAtoms([[myAtom, initialState]]); const [data, setData] = useAtom(myAtom); kembalikan <>{data.id}</>; }</pre> <p>Ralat hilang sepenuhnya apabila saya mengimport subkomponen secara dinamik menggunakan <code>next/dynamic</code> dan menetapkan pilihan SSR kepada palsu atau mengalih keluar <code>useHydrateAtoms</code> penyelesaian mengalahkan tujuan pelaksanaan ini. </p> <p>Bagaimana cara saya menyediakan keadaan awal kepada atom saya menggunakan nilai daripada pelayan supaya atom tidak <kod>null</kod> </p>
P粉548512637
P粉548512637

membalas semua(1)
P粉495955986

Saya dapati useHydrateAtoms 钩子本身并不是问题,它是一个客户端组件,它访问通过 next/dynamic 动态导入的 UI 不同部分的状态 ssr 选项设置为 false. Ini menyebabkan nilai yang dipaparkan oleh komponen berubah pada pemaparan pertama, mengakibatkan ketidakpadanan UI.

Cara membetulkan ralat

Hanya alihkan panggilan komponen useHydrateAtoms ke bahagian atas pepohon komponen, ini akan memastikan semua komponen anak akan dipaparkan dengan nilai yang betul.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan