React-Native'de Navigator bileşeniyle özel gezinme


158

Bileşenin yardımıyla görünümler arasında özel gezinme özelliğine sahip bir demo uygulaması geliştirirken React Native'ın olanaklarını araştırıyorum .Navigator

Ana uygulama sınıfı navigatörü ve iç renderScenedönüşleri geçen bileşeni oluşturur:

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 });
                    }
                }}
             />
        );
    }
}

Şimdilik uygulama iki görünüm içeriyor:

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>
        );
    }
}

Ne bulmak istiyorum:

  • Günlüklerde, "beslemeye git" düğmesine basarken renderScenegörünümün bir kez doğru görüntülenmesine rağmen birkaç kez çağrıldığını görüyorum . Animasyon böyle mi çalışıyor?

    index.ios.js:57 Object {name: 'WelcomeView', component: function}
    index.ios.js:57 Object {name: 'FeedView', component: function}
    // renders Feed View
  • Genel olarak yaklaşımım Tepki yoluna uyuyor mu yoksa daha iyi yapılabilir mi?

Ulaşmak istediğim şey NavigatorIOS, gezinme çubuğu olmadan da benzer bir şey (ancak bazı görünümlerin kendi özel gezinme çubuğu olacaktır).


1
@ericvicenti bu örnek dokümanlardaki Gezgin sayfasında bulunmalıdır . Daha eksiksizdir ve Navigator bileşeninin bağlam içinde nasıl kullanılacağına dair daha iyi bir resim verir.
greatwitenorth

Sadece örneğinizi denemek, bir gezgin itme gerçekleştiğinde sahne otomatik olarak değişmeli mi? Benim için örneğin hiçbir zaman Feed Görünümü'nü göstermiyor! metni, bu yüzden son sürümlerde bir değişiklik olup olmadığını merak ediyorum.
Ian

Yanıtlar:


74

Yaklaşımınız harika olmalı. Fb'deki büyük uygulamalarda require(), sahne bileşenini render edene kadar çağırmaktan kaçınırız , bu da biraz başlatma süresinden tasarruf edebilir.

renderSceneSahne ilk Navigator itildiğinde işlev aranmalıdır. Gezgin yeniden işlendiğinde etkin sahne için de çağrılacaktır. Görürseniz renderScenebir sonraki birden çok kez denilen olsun push, o zaman muhtemelen bir hata var.

Gezgin hala devam eden bir çalışmadır, ancak bununla ilgili herhangi bir sorun bulursanız lütfen github'a dosyalayın ve beni etiketleyin! (@Ericvicenti)


1
Merhaba @Eric lütfen bu bağlantıya bakın: - stackoverflow.com/questions/44538306/…
sid

2

Navigatorartık kullanımdan kaldırılmış durumda RN 0.44.0, react-native-deprecated-custom-componentsbunun yerine , kullanmakta olduğunuz mevcut uygulamayı desteklemek için kullanabilirsiniz Navigator.


1

Diğerlerinin daha önce de belirttiği gibi, Navigator v0.44'ten beri kullanımdan kaldırılmıştır, ancak daha eski uygulamaları desteklemek için içe aktarılabilir:

Gezgin, 0.44 sürümünde çekirdek React Native paketinden kaldırıldı. Modül, geriye dönük uyumluluğu korumak için uygulamanız tarafından içe aktarılabilen bir reaksiyon-yerel-özel bileşenler paketine taşınmıştır .

Gezgin için orijinal dokümanları görmek için lütfen dokümanların daha eski bir sürümüne geçin.

Dokümanlara göre (React Native v0.54) Ekranlar Arasında Geçiş Yapma . Şimdi daha yeni başlıyorsanız React Navigation veya Android olmayan uygulamalar için NavigatorIOS kullanılması önerilir

Navigasyona yeni başlıyorsanız, muhtemelen React Navigation'ı kullanmak isteyeceksiniz . React Navigation, hem iOS hem de Android'de ortak yığın navigasyonu ve sekmeli navigasyon kalıpları sunma özelliği ile kullanımı kolay bir navigasyon çözümü sağlar.

...

Yalnızca iOS'u hedefliyorsanız, yerel UINavigationController sınıfının etrafına bir sarıcı sağladığı için, minimum yapılandırma ile yerel bir görünüm ve his sağlamanın bir yolu olarak NavigatorIOS'a da göz atmak isteyebilirsiniz .

Not : Bu cevabı verirken React Native, 0.54 sürümündeydi


0

Gezgin bileşeni artık kullanımdan kaldırıldı. Askonov tarafından tepki-doğal yönlendirici-akı kullanabilirsiniz, çok çeşitli ve birçok farklı animasyonları destekliyor ve verimli

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.