navigation.navigate no es una función

votos
1

Estoy usando la navegación para navegar mi reaccionan aplicación nativa y no podía PayPass este problema. Hice lo que la documentación pero nada funciona para mí.

El problema es que estoy tratando de utilizar la opción de navegación para agregar un encabezado y el botón derecho para que me vaya a otra pantalla, pero me sigue dando este error: . Navigation.navigate no es una función (en navigation.navigate no está definido )

Aquí está mi código:

    static navigationOptions = (navigation) => {
        return {
            title: 'Review Jobs',
            headerRight: (<Title onPress={()=>{navigation.navigate('settings')}}>Settings</Title>)
        };
    };

gracias

Publicado el 20/10/2018 a las 10:51
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Este es un problema común con Reaccionar, especialmente cuando usted no entiende los nuevos estándares de JS (como ES6, que es utilizado por Reaccionar).

Por lo tanto, su problema es conceptual aquí. Reaccionar componentes reciben un solo objeto, el nombre props, que contiene toda la props. Normalmente, se utiliza el formulario de la deconstrucción para obtener directamente algunos atributos de los apoyos. En este caso, usted quiere tener props.navigation.

Puede deconstruir los puntales objeto en los argumentos de la función de flecha, que es lo que hace la documentación, con el ({navigation}) => ...lugar de(navigation) => ...

Esto es lo mismo que usar (props) => ...y más tarde hacerprops.navegation

También tendrá que cambiar su función onPress. El uso de un {...}bloque en función de la flecha no regresará nada menos que especifique return. Si no lo hace en torno a su cuerpo a funcionar con {...}, entonces es lo mismo que escribir {...} retorno. Por lo tanto, si desea regresar navigation.navigate('settings'), hay que eliminar la rodea {...}o escribir volver dentro.

    static navigationOptions = ({navigation}) => {
        return {
            title: 'Review Jobs',
            headerRight: (<Title onPress={()=> navigation.navigate('settings')}>Settings</Title>)
        };
    };

Además, se podría hacer lo mismo con su función navigationOptions:

    static navigationOptions = ({navigation}) => ({
        title: 'Review Jobs',
        headerRight: (<Title onPress={() => navigation.navigate('settings')}> Settings </Title>),
    });
Respondida el 20/10/2018 a las 11:12
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more