react-navigation / react-navigation/react-navigation.github.io
Documentation for web use is confusing and/or incomplete
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 324
- Forks
- 2k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I began exploring bringing my RN project to the web via react-native-web and quickly hit a stumbling block with react-navigation due to the confusing or incomplete documentation about web usage. I'm referring to the documentation here:
https://reactnavigation.org/docs/en/web-support.html
Specifically the following are/were points of confusion
- The "with react native web" section only mentions using expo. React-native-web seems to be the de-facto mechanism to bring RN projects to web in the community and I would guess that a lot (or most) projects don't use non-ejected expo. How does react navigation web support relate to react-native-web in general outside of the context of expo?
- The "with standard web tools" section isn't really clear about what "standard web tools" means in this context. It seems to refer to using react-native-web or a plain web browser with a bundler like webpack?
- The package names are confusing and I couldn't find any clarification. There's
react-navigation@react-navigation/core,@react-navigation/weband a bunch of others on NPM with no indication that I could find of what the difference between them is. The@react-navigationpackages seem to be lower/older versions but are recommended for web use in the docs. Which package is for which usage and which packages are old/deprecated? - How does using the packages in the example
@react-navigation/coreand@react-navigation/webwork alongside "normal"react-navigationin a react-native-web project? This appears to be missing entirely from the docs and I had to hack/find a solution across a lot of different issues in a bunch of repos. - Are there TS definitions for the
@react-navigationpackages?
Here's how I've ended up configuring my navigator but honestly I have no idea if this is the best/correct/compatible way to do it with react-native-web:
import { createSwitchNavigator } from "@react-navigation/core"
import { createAppContainer } from "react-navigation"
// import { createStackNavigator } from "react-navigation-stack"
import { createBrowserApp } from "@react-navigation/web"
import AuthScreen from "../screens/AuthScreen"
import HomeScreen from "../screens/HomeScreen"
import AuthLoadingScreen from "../screens/AuthLoadingScreen"
import Main from "../../Main"
import { Platform } from "react-native"
const AppStack = createSwitchNavigator({ Home: Main }, { headerMode: "none" })
const AuthStack = createSwitchNavigator({ SignIn: AuthScreen }, { headerMode: "none" })
let appNavigator = createAppContainer(
createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: AppStack,
Auth: AuthStack
},
{
initialRouteName: "AuthLoading"
}
)
)
if (Platform.OS == "web") {
appNavigator = createBrowserApp(
createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: AppStack,
Auth: AuthStack
},
{
initialRouteName: "AuthLoading"
}
)
)
}
export default appNavigator
Some clarification on if this is a good/acceptable approach would be appreciated. Once I figure out the answers to these questions myself perhaps I'll be able to submit a documentation PR to help others avoid this confusion.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la documentación de compatibilidad web en reactnavigation.org/docs/en/web-support.html y revisa los ejemplos de paquetes referenciados en el issue. Aclara cómo se relaciona react-native-web con Expo y las herramientas web estándar, distingue los paquetes de navegación y el soporte de TypeScript, y documenta la configuración recomendada. Se considera terminado cuando las preguntas enumeradas están respondidas sin requerir que los lectores busquen en otros repositorios.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, react, react-native
- Área
- documentation, mobile-dev, web-dev
- Tipo de issue
- Documentación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100