Rumah > hujung hadapan web > tutorial js > useSyncExternalStoreExports dalam kod sumber negeri dijelaskan.

useSyncExternalStoreExports dalam kod sumber negeri dijelaskan.

WBOY
Lepaskan: 2024-09-10 11:06:34
asal
838 orang telah melayarinya

Dalam artikel ini, kita akan melihat cara Zustand menggunakan useSyncExternalStoreExports dalam [kod sumber.]

useSyncExternalStoreExports in Zustand source code explained.

useSyncExternalStoreExports diimport daripada use-sync-external-store/shim/with-selector. use-sync-external-store ialah shim yang serasi ke belakang untuk React.useSyncExternalStore Berfungsi dengan mana-mana React yang menyokong Cangkuk.

Membaca ayat di atas, anda mungkin tertanya-tanya apakah kegunaanSyncExternalStore.

useSyncExternalStore

useSyncExternalStore ialah React Hook yang membolehkan anda melanggan kedai luaran.

const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)
Salin selepas log masuk

Gunakan useSyncExternalStore untuk membaca nilai dari kedai luaran yang boleh:

  1. Perpustakaan pengurusan negeri pihak ketiga yang mengekalkan keadaan di luar React.

  2. API Penyemak imbas yang mendedahkan nilai dan peristiwa boleh ubah untuk melanggan perubahannya.

Contoh penggunaan:

import { useSyncExternalStore } from 'react';
import { todosStore } from './todoStore.js';

function TodosApp() {
  const todos = useSyncExternalStore(todosStore.subscribe, todosStore.getSnapshot);
  // ...
}
Salin selepas log masuk

Contoh di atas dipilih daripada React docs.

useSyncExternalStore Penggunaan Dalam Zustand:

Zustand menggunakan useSyncExternalStore dalam src/traditional.ts.

import ReactExports from 'react'
// eslint-disable-next-line import/extensions
import useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector'
import { createStore } from './vanilla.ts'
import type {
  Mutate,
  StateCreator,
  StoreApi,
  StoreMutatorIdentifier,
} from './vanilla.ts'

const { useDebugValue } = ReactExports
const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports
Salin selepas log masuk

useSyncExternalStoreWithSelector dinyahstruktur daripada useSyncExternalStoreExports dan ini digunakan dalam useStoreWithEqualityFn.

export function useStoreWithEqualityFn<TState, StateSlice>(
  api: ReadonlyStoreApi<TState>,
  selector: (state: TState) => StateSlice = identity as any,
  equalityFn?: (a: StateSlice, b: StateSlice) => boolean,
) {
  const slice = useSyncExternalStoreWithSelector(
    api.subscribe,
    api.getState,
    api.getInitialState,
    selector,
    equalityFn,
  )
  useDebugValue(slice)
  return slice
}
Salin selepas log masuk

useSyncExternalStoreWithSelector mempunyai api.subscribe, api.getState, api.getInitialState, pemilih dan equalityFn.

Tentang kami:

Di Think Throo, kami berada dalam misi untuk mengajar amalan terbaik yang diilhamkan oleh projek sumber terbuka.

10x kemahiran pengekodan anda dengan mempraktikkan konsep seni bina lanjutan dalam Next.js/React, pelajari amalan terbaik dan bina projek gred pengeluaran.

Kami adalah sumber terbuka — https://github.com/thinkthroo/thinkthroo (Beri kami bintang!)

Tingkatkan kemahiran pasukan anda dengan kursus lanjutan kami berdasarkan seni bina pangkalan kod. Hubungi kami di hello@thinkthroo.com untuk mengetahui lebih lanjut!

Rujukan:

  1. https://github.com/pmndrs/zustand/blob/main/src/traditional.ts#L44

  2. https://www.npmjs.com/package/use-sync-external-store

  3. https://legacy.reactjs.org/docs/hooks-reference.html#usesyncexternalstore

  4. https://react.dev/reference/react/useSyncExternalStore

  5. https://github.com/reactwg/react-18/discussions/86



Atas ialah kandungan terperinci useSyncExternalStoreExports dalam kod sumber negeri dijelaskan.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan