Add the dependency:
npm i react-navigation-helpersWorks with React Navigation
- v6
- v5
- v4
"@react-navigation/native": ">= 4.x.x"| Version | Supported React Navigation Version | 
|---|---|
| 2.0.0 > | v6 | 
| 1.1.1 | v5 | 
| < 0.1.0 | v4 | 
Set the global level navigation reference into the NavigationContainer
import { isReadyRef, navigationRef } from "react-navigation-helpers";
useEffect((): any => {
  return () => (isReadyRef.current = false);
}, []);
<NavigationContainer
  ref={navigationRef}
  onReady={() => {
    isReadyRef.current = true;
  }}
>
  {/* Rest of your code */}
</NavigationContainer>;import * as NavigationService from "react-navigation-helpers";
NavigationService.navigate("home");import * as NavigationService from "react-navigation-helpers";
NavigationService.push("home");import * as NavigationService from "react-navigation-helpers";
NavigationService.pop();import * as NavigationService from "react-navigation-helpers";
NavigationService.popToTop();import * as NavigationService from "react-navigation-helpers";
NavigationService.back();The usage does not change. Simply put your prop as the secondary prop as same as React Navigation itself.
import * as NavigationService from "react-navigation-helpers";
NavigationService.navigate("home", { data: myData, myId: "d1f01df1" });import * as NavigationService from "react-navigation-helpers";
NavigationService.push("home", { data: myData, myId: "d1f01df1" });const { data, id } = this.props.route.params;| Property | Type | Default | Description | 
|---|---|---|---|
| navigate | function | function | navigate the selected screen | 
| push | function | function | push the selected screen | 
| goBack | function | function | back the previous screen | 
| pop | function | function | pop the previous screen | 
| popToTop | function | function | pop the top level of the screen | 
| reset | function | function | reset the navigator | 
To listen to the Stack navigator events from anywhere, you need to import navigationListenerProps and spread it as props. It is currently limited to a single stack navigator.
import { isReadyRef, navigationRef, navigationListenerProps } from "react-navigation-helpers";
useEffect((): any => {
  return () => (isReadyRef.current = false);
}, []);
<NavigationContainer
  ref={navigationRef}
  onReady={() => {
    isReadyRef.current = true;
  }}
>
  <Stack.Navigator {...navigationListenerProps}>
      {/* Rest of your code */}
  </Stack.Navigator>
</NavigationContainer>;you can then listen to stack navigation events anywhere in your app.
Example in a component:
import React, {useEffect} from "react"
import {addNavigationListener} from "react-navigation-helpers"
// or as a whole
import * as NavigationService from "react-navigation-helpers";
const MyComponent = () => {
    
    useEffect(() => {
        return addNavigationListener("transitionEnd", () => {
            // transition ended
        })
    })
    // or like this
    useEffect(() => {
        return NavigationService.addNavigationListener("transitionEnd", () => {
            // transition ended
        })
    })
    
    return (
        <Text>Hello world!</Text>
    )
}-  LICENSE
- Write an article about the lib on Medium
FreakyCoder, kurayogun@gmail.com
React Navigation Helpers Library is available under the MIT license. See the LICENSE file for more info.
