stacknavigator react navegacion javascript ios navigation reactjs react-native

javascript - navegacion - Navegación personalizada con componente Navigator en React-Native



react navigation (4)

Estoy explorando las posibilidades de React Native mientras desarrollo una aplicación de demostración con navegación personalizada entre vistas con la ayuda del componente Navigator .

La clase de aplicación principal representa el navegador y dentro de renderScene devuelve el componente pasado:

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

Por ahora la aplicación contiene dos vistas:

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

Lo que quiero descubrir es:

  • Veo en los registros que al presionar "ir a alimentar" renderScene se llama varias veces, aunque la vista se representa correctamente una vez. ¿Es así como funciona la animación?

    index.ios.js:57 Object {name: ''WelcomeView'', component: function} index.ios.js:57 Object {name: ''FeedView'', component: function} // renders Feed View

  • En general, ¿mi enfoque se ajusta a la forma Reaccionar, o se puede hacer mejor?

Lo que quiero lograr es algo similar a NavigatorIOS pero sin la barra de navegación (sin embargo, algunas vistas tendrán su propia barra de navegación personalizada).


Como otros han mencionado anteriormente, Navigator ha quedado en desuso desde v0.44, pero aún puede importarse para admitir aplicaciones más antiguas:

Navigator se ha eliminado del paquete principal React Native en la versión 0.44. El módulo se ha movido a un paquete react-native-custom-components que su aplicación puede importar para mantener la compatibilidad con versiones anteriores.

Para ver los documentos originales de Navigator, cambie a una versión anterior de los documentos.

Según los documentos (React Native v0.54) Navegando entre pantallas . Ahora se recomienda usar React Navigation si recién está comenzando, o NavigatorIOS para aplicaciones que no sean Android

Si recién está comenzando con la navegación, probablemente quiera usar React Navigation . React Navigation proporciona una solución de navegación fácil de usar, con la capacidad de presentar navegación de pila común y patrones de navegación con pestañas tanto en iOS como en Android.

...

Si solo está apuntando a iOS, es posible que también desee consultar NavigatorIOS como una forma de proporcionar una apariencia nativa con una configuración mínima, ya que proporciona un contenedor alrededor de la clase UINavigationController nativa.

NB : en el momento de proporcionar esta respuesta, React Native estaba en la versión 0.54


El componente del navegador está en desuso ahora. Puede usar react-native-router-flux por askonov, tiene una gran variedad y admite muchas animaciones diferentes y es eficiente


Su enfoque debería funcionar muy bien. En aplicaciones grandes en Fb, evitamos llamar a require() para el componente de escena hasta que lo procesemos, lo que puede ahorrar un poco de tiempo de inicio.

Se debe renderScene función renderScene cuando la escena se empuja por primera vez al navegador. También se llamará para la escena activa cuando se vuelva a representar el navegador. Si ve que se llama a renderScene varias veces después de un push , entonces probablemente sea un error.

El navegador sigue siendo un trabajo en progreso, pero si encuentra algún problema con él, ¡archívelo en github y márqueme! (@ericvicenti)


Navigator está en desuso ahora en RN 0.44.0 , puede usar react-native-deprecated-custom-components en su lugar para admitir su aplicación existente que está usando Navigator .