en mi aplicación utilizo las notificaciones nativas de firebase (fcm) Estoy experimentando un error muy extraño, después de hacer clic en la notificación de fondo, navego a una nueva pantalla, en esta pantalla useEffect compruebo el tipo de parámetros de ruta y obtengo 'cadena' , debido a esto, primero tengo que hacer un JSON.parse, lo extraño es que antes del código de navegación, en App.js, verifico el tipo de datos de notificación enviados desde el servidor y su objeto.
Entonces, justo después de que el objeto de navegación se convierta en un tipo de cadena y tengo que hacer JSON.parse, preferiría no tener que hacer esto...
Aplicación.js
const handleBackgroundNotificationClicked = (data) => { let notifData = data.data; console.log('notifDataType',typeof notifData); //RETURNS OBJECT, AS IT SHOULD navigate('OrderList88888', { activeUser:data.user }) }En la pantalla a la que navego, estoy usando useEffect para verificar el tipo de parámetros de ruta y devuelven el tipo 'cadena':
const route = useRoute(); useEffect(() => { //THIS RETUTNS STRING (WHY WAS IT CONVERTED TO STRING?) console.log('routeParamsType',typeof route.params.activeUser); let obj = JSON.parse(route.params.activeUser); console.log('objType',typeof obj); //THIS RETURNS OBJECT AND NOW I CAN USE THIS DATA getById(obj.id); }, []);Tampoco puedo deconstruir el objeto params como yo en otras pantallas donde navego con el objeto useNavigation
const { activeUser} = useRoute().params;en su lugar tengo que usar
const route = useRoute() route.params.activeUserMe temo que esto se debe quizás a que estoy usando una referencia de navegación (ya que no puedes usar el gancho useNavigation dentro de App.js y ahí es donde configuro mis oyentes de notificación...
Mi archivo RootNavigation:
import * as React from 'react'; export const isReadyRef = React.createRef(); export const navigationRef = React.createRef(); export function navigate(name, params) { if (isReadyRef.current && navigationRef.current) { // Perform navigation if the app has mounted console.log('paramsType',typeof params); //THIS ALSO RETURNS OBJECT navigationRef.current.navigate(name, params); } else { // You can decide what to do if the app hasn't mounted // You can ignore this, or add these actions to a queue you can call later } };Entonces, ¿por qué mis parámetros de ruta se convierten en tipo de cadena después de navegar con NavigationRef?