Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

139
Views
¿Cómo enviar parámetros con navegación correctamente?

Estoy usando navigation.navigate para moverme entre pantallas, pero me enfrento al siguiente problema.

Llamo al método para navegar:

 const FileCard = ({ fileDetails }: Props) => { const navigation = useNavigation(); const loadDetails = () => { console.log(JSON.stringify(fileDetails)); navigation.navigate("FileDetailScreen" as never, {file: fileDetails} as never) }

Y me gustaría conectarme con esta pantalla:

 interface Props { file: FileInfo } const FileDetailScreen = ({ file }: Props) => { return ( <View style={globalStyles.post_login_container}> <Text> { (file) ? <Text>Exists</Text> : <Text>Does not exists</Text> } </Text> </View> ) }

Pero aparece "No existe" en mi pantalla, por lo que no puedo mostrar la información.

ingrese la descripción de la imagen aquí

¿Como puedo solucionar este problema? ¡Gracias!

EDITAR

Llamo a la función loadDetails aquí:

 <TouchableOpacity activeOpacity={0.8} onPress={() => {loadDetails(fileInfo)}} > // Elements and styles </TouchableOpacity>

Y esta es mi navegación de pila:

 <Stack.Navigator screenOptions={{ headerShown: false, cardStyleInterpolator: CardStyleInterpolators.forFadeFromBottomAndroid }}> <Stack.Screen name="LoginScreen" component={LoginScreen} /> <Stack.Screen name="RegisterScreen" component={RegisterScreen} /> <Stack.Screen name="ControlScreen" component={ControlScreen} /> <Stack.Screen name="ProfileScreen" component={ProfileScreen} /> <Stack.Screen name="FilesScreen" component={FilesScreen} /> <Stack.Screen name="UploadFileScreen" component={UploadFileScreen} /> <Stack.Screen name="SearchScreen" component={SearchScreen} /> <Stack.Screen name="ResultsScreen" component={ResultsScreen} /> // THE SCREEN <Stack.Screen name="FileDetailScreen" component={FileDetailScreen} /> </Stack.Navigator>
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Está pasando los accesorios para FileDetailScreen usando los accesorios de parámetro de ruta de navegación. Si tienes una pantalla

 const FileDetailScreen = ({ file }: Props) => { ... }

entonces file es un accesorio del componente JSX, por ejemplo

 const SomeOtherScreen = () => { return <FileDetailScreen file={someFile} /> }

Esto es diferente a pasar un accesorio usando los parámetros de ruta. Si queremos navegar a FileDetailScreen y pasar el archivo prop usando

 navigation.navigate("FileDetailScreen" as never, {file: fileDetails} as never)

no está instanciando un nuevo componente JSX, pero está pasando parámetros de ruta . Podemos acceder a ellos de la siguiente manera.

 const FileDetailScreen = ({file, route}) { const f = route.params?.file }

Observe que la route es pasada por el Navigator . Siendo precisos aquí, deberíamos agregar esto a la interfaz de accesorios de su pantalla para satisfacer a TypeScript. Esto está muy bien documentado aquí .

Editar: dado que se solicitó explícitamente resolver el error de TypeScript, también vamos a resolver esto.

  1. Cree un tipo, por ejemplo, RootStackParams donde necesitamos proporcionar los tipos para todos los parámetros de ruta.
 export type RouteStackParams = { FileDetailScreen: { file: FileInfo } ... }

Tenga en cuenta que debe hacer esto para todas sus rutas a fin de proporcionar los tipos correctos para el compilador de TypeScript.

  1. Cree su Stack.Navigator proporcionando los tipos de parámetros de ruta de la siguiente manera.
 const Stack = createStackNavigator<RouteStackParams>()

Su FileDetailScreen ahora está escrito correctamente. Tenga en cuenta también que esto no afecta su comportamiento en tiempo de ejecución, por lo que su código funcionaría sin hacer esto.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!