रीएक्ट-नेटिव में नेविगेटर घटक के साथ कस्टम नेविगेशन


158

मैं घटक की मदद से विचारों के बीच कस्टम नेविगेशन के साथ एक डेमो ऐप विकसित करते हुए रिएक्ट नेटिव की संभावनाएं तलाश रहा हूं ।Navigator

मुख्य ऐप क्लास नाविक को प्रस्तुत करता है और renderSceneरिटर्न रिटर्न घटक पारित होता है:

class App extends React.Component {
    render() {
        return (
            <Navigator
                initialRoute={{name: 'WelcomeView', component: WelcomeView}}
                configureScene={() => {
                    return Navigator.SceneConfigs.FloatFromRight;
                }}
                renderScene={(route, navigator) => {
                    // count the number of func calls
                    console.log(route, navigator); 

                    if (route.component) {
                        return React.createElement(route.component, { navigator });
                    }
                }}
             />
        );
    }
}

अभी के लिए ऐप में दो दृश्य हैं:

class FeedView extends React.Component {
    render() {
        return (
            <View style={styles.container}>
                <Text>
                    Feed View!
                </Text>
            </View>
        );
    }
}

class WelcomeView extends React.Component {
    onPressFeed() {
        this.props.navigator.push({
            name: 'FeedView',
            component: FeedView
        });
    }

    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    Welcome View!
                </Text>

                <Text onPress={this.onPressFeed.bind(this)}>
                    Go to feed!
                </Text>
            </View>
        );
    }
}

मैं यह जानना चाहता हूं:

  • मैं लॉग में देखता हूं कि जब "फीड पर जाएं" दबाया renderSceneजाता है तो कई बार कहा जाता है, हालांकि दृश्य एक बार सही तरीके से प्रस्तुत होता है। क्या यह है कि एनीमेशन कैसे काम करता है?

    index.ios.js:57 Object {name: 'WelcomeView', component: function}
    index.ios.js:57 Object {name: 'FeedView', component: function}
    // renders Feed View
    
  • आम तौर पर मेरा दृष्टिकोण प्रतिक्रिया मार्ग के अनुरूप होता है, या क्या यह बेहतर किया जा सकता है?

मैं जो हासिल करना चाहता हूं NavigatorIOSवह नेविगेशन बार के समान है (हालांकि कुछ विचारों का अपना कस्टम नेविगेशन बार होगा)।


1
@ericvicenti इस उदाहरण को डॉक्स में नेविगेटर पेज पर शामिल किया जाना चाहिए । यह अधिक पूर्ण है और संदर्भ में नेविगेटर घटक का उपयोग करने का एक बेहतर चित्र देता है।
महानवित्नर्थ

बस अपने उदाहरण की कोशिश करते हुए, जब नाविक धक्का होता है तो क्या दृश्य स्वचालित रूप से बदल जाना चाहिए? मेरे लिए आपका उदाहरण कभी भी फीड दृश्य नहीं दिखाता है! पाठ, इसलिए मुझे आश्चर्य हो रहा है कि क्या हाल के संस्करणों के साथ कुछ बदल गया है।
इयान

जवाबों:


74

आपका दृष्टिकोण महान काम करना चाहिए। Fb में बड़े एप्लिकेशन में, हम require()दृश्य घटक के लिए कॉल करने से बचते हैं जब तक कि हम इसे रेंडर नहीं करते हैं, जो स्टार्ट-अप के समय को थोड़ा बचा सकता है।

renderSceneजब दृश्य पहले नेविगेटर को धक्का दे समारोह बुलाया जाना चाहिए। यह भी सक्रिय दृश्य के लिए कहा जाएगा जब नेविगेटर फिर से प्रदान किया जाता है। यदि आप देखते हैं renderSceneकि एक के बाद कई बार कॉल किया जाता है push, तो यह संभवतः एक बग है।

नाविक अभी भी एक कार्य प्रगति पर है, लेकिन अगर आपको इसके साथ कोई समस्या मिलती है तो कृपया जीथब पर फ़ाइल करें और मुझे टैग करें! (@Ericvicenti)


1
-: @Eric हैलो कृपया इस लिंक पर नजर है stackoverflow.com/questions/44538306/...
sid

2

Navigatorअब RN 0.44.0आपके द्वारा उपयोग किए जा रहे react-native-deprecated-custom-componentsअपने मौजूदा एप्लिकेशन का समर्थन करने के लिए उपयोग किया जा सकता है Navigator


1

जैसा कि दूसरों ने पहले उल्लेख किया है, नेविगेटर को v0.44 से हटा दिया गया है, लेकिन अभी भी पुराने अनुप्रयोगों का समर्थन करने के लिए आयात किया जा सकता है:

नेविगेटर को संस्करण 0.44 में मूल प्रतिक्रियाशील मूल पैकेज से हटा दिया गया है। मॉड्यूल को एक प्रतिक्रिया-देशी-कस्टम-घटक पैकेज में स्थानांतरित किया गया है जिसे आपके एप्लिकेशन द्वारा पीछे की संगतता बनाए रखने के लिए आयात किया जा सकता है।

नेविगेटर के लिए मूल डॉक्स देखने के लिए, डॉक्स के पुराने संस्करण पर जाएँ।

डॉक्स के अनुसार (रिएक्टिव नेटिव v0.54) स्क्रीन के बीच नेविगेट करना । यदि आप अभी शुरू हो रहे हैं, या गैर-एंड्रॉइड अनुप्रयोगों के लिए नेविगेटरआईओएस पर रिएक्ट नेविगेशन का उपयोग करने की सिफारिश की गई है

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

...

यदि आप केवल iOS को लक्षित कर रहे हैं, तो आप एक मूल स्वरूप प्रदान करने और न्यूनतम कॉन्फ़िगरेशन के साथ महसूस करने के तरीके के रूप में NavigatorIOS की भी जांच कर सकते हैं , क्योंकि यह मूल UINavigationController वर्ग के आसपास एक आवरण प्रदान करता है।

NB : इस उत्तर को प्रदान करने के समय, प्रतिक्रिया मूल निवासी 0.54 संस्करण में था


0

नेविगेटर घटक को अब हटा दिया गया है। आप Askonov द्वारा प्रतिक्रिया-देशी-रूटर-फ्लक्स का उपयोग कर सकते हैं, इसकी एक विशाल विविधता है और कई अलग-अलग एनिमेशन का समर्थन करता है और कुशल है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.