रिएक्ट नेटिव LayoutAnimation अगले लेआउट के होने पर स्वचालित रूप से नए पदों पर दृश्यों को एनिमेट करने की अनुमति देता है।

मेरे पास Redux में संग्रहीत आइटम हैं जो एक घटक में गुणों के रूप में पारित किए जाते हैं जो उन्हें प्रस्तुत करते हैं। जब गुण बदलते हैं तो मैं घटक सामग्री को तदनुसार एनिमेट करना चाहता हूं। हालांकि, मुझे यकीन नहीं है कि घटक में LayoutAnimation.configureNext() को कहां कॉल करना है।

componentWillUpdate विधि सही जगह प्रतीत होती है क्योंकि इसे प्रतिपादन से पहले कहा जाता है, लेकिन विधि बहिष्कृत किया गया और निकाला जा रहा हैcomponentDidUpdate बहुत देर हो चुकी है, क्योंकि रेंडर/लेआउट पहले ही हो चुका है।

मैंने गुणों को घटक स्थिति में कॉपी करके और LayoutAnimation.configureNext() को componentDidUpdate में कॉल करके काम किया, जो एनिमेशन का उपयोग करके दूसरे पुन: प्रस्तुत करने के लिए मजबूर करता है। इस घटक के अद्यतन को पिछले रेंडर चक्र से कुछ हद तक अलग करने का अतिरिक्त लाभ हो सकता है जिसमें अन्य घटक अद्यतन हो सकते हैं, लेकिन यह बोझिल लगता है।

जीवनचक्र विधियों में LayoutAnimation.configureNext() को कहां कहा जाना चाहिए?

1
Sampo 15 अप्रैल 2020, 16:46

1 उत्तर

सबसे बढ़िया उत्तर

यह पता चलता है कि LayoutAnimation.configureNext() को componentDidUpdate या useEffect में कॉल करने से गुण बदलते समय एनीमेशन उत्पन्न होता है। जबकि उन विधियों को render() के बाद बुलाया जाता है, वे स्पष्ट रूप से वास्तविक लेआउट और स्क्रीन पर प्रतिपादन से पहले बुलाए जाते हैं।

मैं कॉलबैक/लेआउट/रेंडर जीवनचक्र पर कोई दस्तावेज नहीं ढूंढ पा रहा था जो इन चरणों को अलग करेगा, लेकिन अनुभवजन्य रूप से यह काम करता है।

0
Sampo 16 अप्रैल 2020, 13:34