"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > राज्य स्रोत कोड में उपयोगसिंकएक्सटर्नलस्टोरएक्सपोर्ट की व्याख्या की गई।

राज्य स्रोत कोड में उपयोगसिंकएक्सटर्नलस्टोरएक्सपोर्ट की व्याख्या की गई।

2024-11-03 को प्रकाशित
ब्राउज़ करें:576

इस लेख में, हम देखेंगे कि Zustand अपने [स्रोत कोड] में useSyncExternalStoreExports का उपयोग कैसे करता है।

useSyncExternalStoreExports in Zustand source code explained.

useSyncExternalStoreExports को यूज़-सिंक-एक्सटर्नल-स्टोर/शिम/विथ-सेलेक्टर से आयात किया जाता है। यूज़-सिंक-एक्सटर्नल-स्टोर, React.useSyncExternalStore के लिए एक बैकवर्ड-संगत शिम है जो हुक्स को सपोर्ट करने वाले किसी भी रिएक्ट के साथ काम करता है।

उपरोक्त वाक्य को पढ़कर, आप सोच रहे होंगे कि यह कैसा यूज़सिंकएक्सटर्नलस्टोर है।

useSyncExternalStore

useSyncExternalStore एक रिएक्ट हुक है जो आपको बाहरी स्टोर की सदस्यता लेने की सुविधा देता है।

const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)

बाहरी स्टोर से एक मान पढ़ने के लिए यूज़सिंकएक्सटर्नलस्टोर का उपयोग करें जो हो सकता है:

  1. तृतीय-पक्ष राज्य प्रबंधन पुस्तकालय जो प्रतिक्रिया के बाहर राज्य रखते हैं।

  2. ब्राउज़र एपीआई जो इसके परिवर्तनों की सदस्यता के लिए एक परिवर्तनीय मूल्य और घटनाओं को उजागर करता है।

उदाहरण उपयोग:

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

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

उपरोक्त उदाहरण रिएक्ट डॉक्स से लिया गया है।

Zustand में उपयोगसिंकएक्सटर्नलस्टोर का उपयोग:

ज़स्टैंड 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

useSyncExternalStoreWithSelector को useSyncExternalStoreExports से डी-स्ट्रक्चर्ड किया गया है और इसका उपयोग useStoreWithEqualityFn में किया जाता है।

export function useStoreWithEqualityFn(
  api: ReadonlyStoreApi,
  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
}

useSyncExternalStoreWithSelector में api.subscribe, api.getState, api.getInitialState, चयनकर्ता और समानताFn है।

हमारे बारे में:

थिंक थ्रू में, हम ओपन-सोर्स परियोजनाओं से प्रेरित सर्वोत्तम प्रथाओं को सिखाने के मिशन पर हैं।

नेक्स्ट.जेएस/रिएक्ट में उन्नत वास्तुशिल्प अवधारणाओं का अभ्यास करके अपने कोडिंग कौशल को 10 गुना करें, सर्वोत्तम प्रथाओं को सीखें और उत्पादन-ग्रेड परियोजनाओं का निर्माण करें।

हम खुले स्रोत हैं - https://github.com/thinkthroo/thinkthroo (हमें एक स्टार अवश्य दें!)

कोडबेस आर्किटेक्चर पर आधारित हमारे उन्नत पाठ्यक्रमों के साथ अपनी टीम को कुशल बनाएं। अधिक जानने के लिए [email protected] पर हमसे संपर्क करें!

संदर्भ:

  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#usesyncexinternalstore

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

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



विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/thinkthroo/usesyncexinternalstoreexports-in-zustand-source-code-explained-4n80?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3