Swift Academy · पाठ

Equatable Views और @State Scope

अमान्यकरण सीमित करने के लिए स्थिति का दायरा संकीर्ण कीजिए।

पाठ 3, कुल 4 में से13 चरण

Equatable Views और @State Scope, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

समानता से काम छोड़ा जा सकता है

यदि SwiftUI यह सिद्ध कर सके कि किसी व्यू के इनपुट नहीं बदले हैं, तो वह उसे फिर से रेंडर करना छोड़ सकता है। किसी व्यू को Equatable बनाने से SwiftUI को निर्णय लेने का एक सटीक तरीका मिलता है।

Equatable के अनुरूप बनाना

अपने व्यू को Equatable के अनुरूप बनाइए, ताकि SwiftUI पुराने और नए मानों की तुलना कर सके। यदि वे समान हों, तो वह body को छोड़ देता है।

struct Badge: View, Equatable {
    let count: Int
    var body: some View { Text("\(count)") }
    static func == (a: Badge, b: Badge) -> Bool {
        a.count == b.count
    }
}

EquatableView

आप किसी भी Equatable व्यू को .equatable() से भी लपेट सकते हैं। इससे हर जगह प्रकार के कॉल करने के स्थान बदले बिना, तुलना-आधारित स्किपिंग का अनुरोध किया जा सकता है।

Badge(count: total)
    .equatable()

Equatable कब उपयोगी है

Equatable ऐसे व्यू के लिए बहुत उपयोगी है जिनके इनपुट की तुलना सस्ती हो, लेकिन जिनकी body तैयार करना महँगा हो। इसका लाभ तभी मिलता है जब तुलना की लागत रेंडर करने की लागत से बहुत कम हो।

तुलना की लागत का जाल

यदि आपका == स्वयं महँगा है, जैसे बड़ी ऐरे की गहन तुलना, तो इसकी लागत उस रेंडर से भी अधिक हो सकती है जिसे आप छोड़ना चाहते हैं। केवल सस्ते और निर्णायक फ़ील्ड की तुलना कीजिए।

static func == (a: Self, b: Self) -> Bool {
    a.id == b.id && a.version == b.version // cheap fields
}

डिफ़ॉल्ट रूप से बनाया गया Equatable

यदि सभी संग्रहीत गुण Equatable हों, तो Swift == को अपने-आप बना सकता है। लेकिन क्लोज़र और कुछ प्रकार Equatable नहीं होते, इसलिए आपको ऐसा कस्टम कार्यान्वयन लिखना पड़ सकता है जो उन्हें नज़रअंदाज़ करे।

struct Card: View, Equatable {
    let title: String
    let onTap: () -> Void // not Equatable
    static func == (a: Card, b: Card) -> Bool { a.title == b.title }
    var body: some View { Text(title) }
}

@State का दायरा छोटा करना

बहुत ऊपर रखी गई स्थिति उसके नीचे के हर हिस्से को फिर से रेंडर कराती है। @State को उस सबसे छोटे व्यू तक नीचे ले जाइए जो उसका स्वामी है, ताकि बदलाव कम-से-कम UI को प्रभावित करें।

// Move toggle state into the row that uses it
struct Row: View {
    @State private var expanded = false
    var body: some View { /* only this row re-renders */ Text("Row") }
}

साझा होने पर ही स्थिति ऊपर ले जाएँ

स्थिति को तभी ऊपर ले जाइए जब कई व्यू को वास्तव में उसकी आवश्यकता हो। अन्यथा स्थानीय स्थिति फिर से रेंडर होने के प्रभाव-क्षेत्र को छोटा रखती है।

अपडेट को स्थानीय बनाने के लिए उप-व्यू निकालें

बार-बार बदलने वाले हिस्से को अपने अलग व्यू में निकालने से उसका पुनर्मूल्यांकन उसी व्यू तक सीमित रहता है और सहोदर व्यू अप्रभावित रहते हैं।

struct LiveClock: View {
    @State private var now = Date()
    var body: some View { Text(now, style: .time) }
}

बाइंडिंग और दायरा

@Binding किसी child को parent की स्थिति से जोड़ता है। पूरे ऑब्जेक्ट के बजाय सीमित बाइंडिंग (एक फ़ील्ड) भेजने से यह सीमित होता है कि कौन-से बदलाव आगे प्रसारित होंगे।

struct NameField: View {
    @Binding var name: String // narrow binding
    var body: some View { TextField("Name", text: $name) }
}

Equatable को दायरे के साथ मिलाएँ

सबसे अच्छे परिणाम तकनीकों को मिलाने से मिलते हैं: ट्रिगर कम करने के लिए स्थिति का दायरा छोटा रखें और फिर भी होने वाले रेंडर को छोड़ने के लिए Equatable का उपयोग करें।

त्वरित जाँच: Equatable व्यू

Equatable व्यू और स्थिति के दायरे की अपनी समझ का परीक्षण कीजिए।

पुनरावलोकन: Equatable व्यू और स्थिति का दायरा

किसी व्यू को Equatable बनाने (या .equatable() का उपयोग करने) से SwiftUI बिना बदले हुए रेंडर को छोड़ सकता है—यह तब उपयोगी है जब तुलना करना रेंडर करने की तुलना में बहुत सस्ता हो और केवल निर्णायक फ़ील्ड की तुलना की जाए।

@State को सबसे छोटे स्वामी व्यू तक सीमित रखें, सीमित बाइंडिंग भेजें और तेजी से बदलने वाले हिस्सों को उनके अपने व्यू में निकालें। सीमित स्थिति-दायरे को Equatable के साथ मिलाने पर सबसे कम और सबसे सस्ते पुनः-रेंडर होते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “Equatable Views और @State Scope” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Equatable Views और @State Scope” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Equatable Views और @State Scope” में मैं क्या सीखूँगा?

अमान्यकरण सीमित करने के लिए स्थिति का दायरा संकीर्ण कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Equatable Views और @State Scope” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. View Identity को समझना
  2. Body का पुनर्मूल्यांकन कम करना
  3. Equatable Views और @State Scope
  4. SwiftUI Instrument से प्रोफ़ाइलिंग
← Swift Academy पर वापस जाएँ