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

Staat के स्रोत कोड में object.is() का उपयोग।

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

इस लेख में, हम यह पता लगाएंगे कि Zustand के स्रोत कोड में object.is() विधि का उपयोग कैसे किया जाता है।

Object.is() usage in Zustand’s source code.

उपरोक्त कोड स्निपेट vanilla.ts से लिया गया है

Object.is() पद्धति का उपयोग सेटस्टेट में किया जाता है (इस पर बाद में और लेख)।

आइए पहले समझें कि object.is() विधि क्या है।

वस्तु.is()

Object.is() स्थिर विधि यह निर्धारित करती है कि दो मान समान हैं या नहीं।

नीचे दिया गया उदाहरण एमडीएन डॉक्स से लिया गया है:

    console.log(Object.is('1', 1));
    // Expected output: false

    console.log(Object.is(NaN, NaN));
    // Expected output: true

    console.log(Object.is(-0, 0));
    // Expected output: false

    const obj = {};
    console.log(Object.is(obj, {}));
    // Expected output: false

यहां थोड़ा जटिल JSON उदाहरण दिया गया है:

    const jsonObject1 = {
        name: "foo",
        age: 30
    };

    const jsonObject2 = {
        name: "bar",
        age: 30
    };

    console.log(Object.is(jsonObject1, jsonObject2)); // false

ऑब्जेक्ट.आईएस() झूठी वापसी क्यों करता है?

हालांकि jsonObject1 और jsonObject2 में एक ही सामग्री है, वे मेमोरी में अलग-अलग ऑब्जेक्ट हैं। जावास्क्रिप्ट में, वस्तुओं की तुलना संदर्भ के आधार पर की जाती है, न कि उनकी सामग्री के आधार पर। चूंकि ये दोनों ऑब्जेक्ट अलग-अलग मेमोरी स्थानों पर संग्रहीत हैं, इसलिए object.is() गलत रिटर्न देता है।

ऑब्जेक्ट.है (अगला राज्य, राज्य)

Zustand के नीचे दिए गए कोड स्निपेट में, राज्य को अद्यतन करने और श्रोताओं को सूचित करने के लिए आगे बढ़ने से पहले यह निर्धारित करने के लिए ऑब्जेक्ट.आईएस() विधि का उपयोग किया जाता है कि अगला राज्य वर्तमान स्थिति से वास्तव में अलग है या नहीं। यह जांच प्रदर्शन और अनावश्यक स्थिति अपडेट से बचने के लिए महत्वपूर्ण है।

    const setState: StoreApi['setState'] = (partial, replace) => {
      // TODO: Remove type assertion once https://github.com/microsoft/TypeScript/issues/37663 is resolved
      // https://github.com/microsoft/TypeScript/issues/37663#issuecomment-759728342
      const nextState =
        typeof partial === 'function'
          ? (partial as (state: TState) => TState)(state)
          : partial
      if (!Object.is(nextState, state)) {
        const previousState = state
        state =
          (replace ?? (typeof nextState !== 'object' || nextState === null))
            ? (nextState as TState)
            : Object.assign({}, state, nextState)
        listeners.forEach((listener) => listener(state, previousState))
      }
    }

नीचे दी गई छवि ऑब्जेक्ट.आईएस() को क्रिया में दिखाती है

Object.is() usage in Zustand’s source code.

Object.is() usage in Zustand’s source code.

उपरोक्त लॉग स्टेटमेंट को जोड़ने के लिए, मैंने पीएनपीएम रन बिल्ड कमांड का उपयोग करके ज़स्टैंड को संकलित किया और डिस्ट को उदाहरण/डेमो/src में कॉपी किया। अजीब लगता है, लेकिन हम प्रयोग कर रहे हैं और पता लगा रहे हैं कि ज़स्टैंड आंतरिक रूप से कैसे काम करता है।

Object.is() usage in Zustand’s source code.

    const useStore = create((set) => ({
      count: 1,
      inc: () => set((state) => ({ count: state.count   1 })),
    }))

कॉलिंग इंक किसी तरह सेटस्टेट को ट्रिगर करता है, हम आने वाले लेखों में इसका पता लगाएंगे।

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

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

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

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

नेक्स्ट.जेएस प्रोजेक्ट के लिए मदद चाहिए? हमसे [email protected] पर संपर्क करें

लेखक के बारे में:

अरे, मैं राम हूं। मैं एक उत्साही सॉफ्टवेयर इंजीनियर/ओएसएस टिंकरर हूं।

मेरी वेबसाइट देखें: https://www.ramunarasinga.com/

सन्दर्भ:

  1. https://github.com/pmndrs/zustand/blob/main/src/vanilla.ts#L71

  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is

  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#same-value_equality_using_object.is

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

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

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

Copyright© 2022 湘ICP备2022001581号-3