Composable में viewModel()
ViewModel को सही ढंग से प्राप्त कीजिए और उसका scope निर्धारित कीजिए।
Composable में viewModel(), CoddyKit पर Jetpack Compose Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Jetpack Compose Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Jetpack Compose Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
ViewModel प्राप्त करना
Composable के अंदर आप new से ViewModel नहीं बनाते। इसके बजाय सही इंस्टेंस प्राप्त करने के लिए viewModel() फ़ंक्शन को कॉल करते हैं।
val vm: CounterViewModel = viewModel()यह कहाँ से आता है
viewModel() सहायक निकटतम जीवनचक्र-मालिक को खोजता है और उसके स्कोप वाला ViewModel लौटाता है; यदि अभी कोई मौजूद न हो, तभी नया बनाता है।
रीकम्पोज़िशन में वही इंस्टेंस
रीकम्पोज़िशन आपके फ़ंक्शन को कई बार चलाती है, फिर भी viewModel() हर बार वही इंस्टेंस लौटाता है, इसलिए आपका स्टेट अनपेक्षित रूप से रीसेट नहीं होता।
उससे स्टेट पढ़ना
ViewModel मिलने के बाद उसका प्रेक्षण योग्य स्टेट पढ़ें; स्टेट बदलने पर आपका Composable फिर से ड्रॉ हो जाता है। UI डेटा का अनुसरण करता है। 🔗
val vm: CounterViewModel = viewModel()
Text("Count: " + vm.count)इसके फ़ंक्शन कॉल करना
इवेंट लैम्ब्डा से उसके फ़ंक्शन कॉल करके उपयोगकर्ता की कार्रवाइयाँ ViewModel को भेजें। इससे निर्णय लेने का तर्क आपके Composable से बाहर रहता है।
Button(onClick = { vm.increment() }) {
Text("Add")
}इंपोर्ट
यह फ़ंक्शन जीवनचक्र Compose आर्टिफ़ैक्ट से आता है। इसका उपयोग करने के लिए androidx.lifecycle.viewmodel.compose.viewModel इंपोर्ट करें।
import androidx.lifecycle.viewmodel.compose.viewModelडिफ़ॉल्ट रूप से स्कोपिंग
डिफ़ॉल्ट रूप से ViewModel होस्ट Activity या नेविगेशन गंतव्य के स्कोप में रहता है, इसलिए उस स्कोप के सभी Composables एक ही इंस्टेंस साझा करते हैं। 🎯
कंस्ट्रक्टर आर्ग्युमेंट
निर्भरताएँ भेजनी हैं? एक फ़ैक्टरी दें, ताकि फ़्रेमवर्क जान सके कि कंस्ट्रक्टर पैरामीटर वाला ViewModel कैसे बनाना है।
val vm: CartViewModel = viewModel(factory = CartFactory(repo))होइस्ट करें, नीचे पास न करें
स्क्रीन के रूट के पास ऊपर viewModel() को कॉल करें, फिर चाइल्ड Composables को साधारण स्टेट और कॉलबैक नीचे भेजें, ताकि उनका दोबारा उपयोग किया जा सके।
Preview-अनुकूल डिज़ाइन
क्योंकि viewModel() को वास्तविक मालिक की आवश्यकता होती है, इसलिए चाइल्ड को सरल पैरामीटर लेने के लिए डिज़ाइन करें, ताकि वे अलग-थलग @Preview में भी रेंडर हो सकें।
एक त्वरित पैटर्न
सामान्य प्रवाह सरल है: ViewModel प्राप्त करें, उसका स्टेट पढ़ें और इवेंट उसके फ़ंक्शन तक भेजें। हर स्क्रीन पर यही तीन चरण होते हैं। ✨
त्वरित जाँच
जाँचें कि आप Composable से ViewModel कैसे प्राप्त करते हैं।
पुनरावलोकन
स्कोप वाला ViewModel प्राप्त करने के लिए viewModel() को कॉल करें, UI चलाने के लिए उसका स्टेट पढ़ें और स्वयं बनाने के बजाय उपयोगकर्ता के इवेंट उसके फ़ंक्शन तक भेजें।
एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Composable में viewModel()” पाठ निःशुल्क है?
हाँ—“Composable में viewModel()” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Jetpack Compose Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Jetpack Compose Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Composable में viewModel()” में मैं क्या सीखूँगा?
ViewModel को सही ढंग से प्राप्त कीजिए और उसका scope निर्धारित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Jetpack Compose Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Jetpack Compose Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Jetpack Compose Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Composable में viewModel()” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Jetpack Compose Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Jetpack Compose Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- ViewModel rotation के बाद भी क्यों बना रहता है
- Composable में viewModel()
- UiState Data Class का modeling
- collectAsStateWithLifecycle