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

असंबद्ध प्रतिक्रिया घटकों के बीच स्थिति साझा करना

2024-08-07 को प्रकाशित
ब्राउज़ करें:958

यह दिखाना चाहते हैं कि आप रिएक्ट घटकों के बीच किसी भी क्रमबद्ध डेटा को कैसे साझा कर सकते हैं, उदाहरण के लिए। नेक्स्टजेएस में क्लाइंट घटक।

हमारे पास कुछ असंबंधित घटक हैं:

Example app UI

आइए एक ऑब्जेक्ट बनाएं जिसमें प्रारंभिक स्थिति होगी

export const state: { count: number } = { count: 0 };

हम डेटा को मानचित्र या वीकमैप में संग्रहीत कर सकते हैं, राज्य उस तक पहुंचने की कुंजी होगी। साथ ही, सब्सक्राइबर्स ऐरे की भी आवश्यकता होगी।

const stateMap = new WeakMap();
const subscribers: (() => void)[] = [];

अब डेटा परिवर्तनों की सदस्यता के लिए एक हुक लिखें।

export function useCommonState(stateObj: T) {
  // more efficient than `useEffect` since we don't have any deps
  React.useInsertionEffect(() => {
    const cb = () => {
      const val = stateMap.get(stateObj);
      _setState(val!);
    };
    // subscribe to events
    subscribers.push(cb);

    return () => {
      subscribers.slice(subscribers.indexOf(cb), 1);
    };
  }, []);
}

अब राज्य प्राप्त करने और सेट करने से संबंधित तर्क जोड़ें

  // all instances of hook will point to same object reference
  const [state, _setState] = React.useState(() => {
    const val = stateMap.get(stateObj) as T;
    if (!val) {
      stateMap.set(stateObj, stateObj)
      return stateObj
    }
    return val
  });

  const setState = React.useCallback((newVal: object) => {
    // update value
    stateMap.set(stateObj, newVal);
    // notify all other hook instances
    subscribers.forEach((sub) => sub());
  }, []);

  return { state, setState };

और अब इसे 3 घटकों में उपयोग कर सकते हैं जैसे

import { state as myState } from './state';
//...

const { state, setState } = useCommonState(myState);


// ...
Component A
Count: {state.count}

Final app

आप यहां देख सकते हैं कि यह कैसे काम करता है https://stackblitz.com/~/github.com/asmyshlyaev177/react-common-state-example
या यहां https://codesandbox.io/p/github/asmyshlyaev177/react-common-state-example/main
या जीथब में https://github.com/asmyshlyaev177/react-common-state-example

इस सिद्धांत के आधार पर NextJS के लिए मेरी लाइब्रेरी देखें https://github.com/asmyshlyaev177/state-in-url

पढ़ने के लिए टीएनएक्स।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/asmyshlyaev177/sharing-state-between-unrelated-react-components-4aia?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3