Quantcast
Channel: Active questions tagged react-native+typescript - Stack Overflow
Viewing all articles
Browse latest Browse all 6287

React has detected a change in the order of Hooks called by Navigation

$
0
0

I'm really struggling to work out where my issue lies here, I have changed a lot of code recently and now I am met with this issue

   ERROR  Warning: React has detected a change in the order of Hooks called by Navigation. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks   Previous render            Next render   ------------------------------------------------------1. useContext                 useContext2. undefined                  useRef   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    in Navigation (at App.tsx:96)    in RCTView (at View.js:34)    in View (at createAnimatedComponent.js:217)    in AnimatedComponent (at createAnimatedComponent.js:278)    in AnimatedComponentWrapper (at createAnimatableComponent.js:599)    in withAnimatable(View) (at App.tsx:89)    in App (at mobile/index.js:28)    in HeadlessCheck (at renderApplication.js:47)    in RCTView (at View.js:34)    in View (at AppContainer.js:107)    in RCTView (at View.js:34)    in View (at AppContainer.js:134)    in AppContainer (at renderApplication.js:40)

Presumably this is referring to my Navigation class, which I will share below, I am not particularly educated on the concept behind hooks and this issue is throwing me

import * as React from 'react';import { View } from 'react-native';import { NavigationContainer, NavigationContainerRef } from '@react-navigation/native';import { createStackNavigator } from '@react-navigation/stack';import { useStore } from '_src/store';import { logScreenView } from '_utils/analytics';import { SharedStackParamList } from './shared/SharedStack';import { getSharedScreens } from './shared/Shared.screens';import ErrorBoundary from '../components/atoms/ErrorBoundary';import { modalOptions } from './StackOptions';import { BLACK } from '_styles/colors';const SharedStack = createStackNavigator<SharedStackParamList>();export const Navigation = () => {  const rootStore = useStore();  const { authStore } = rootStore;  if (authStore.token === undefined) return null;  const routeNameRef = React.useRef<string>();  const navigationRef = React.useRef<NavigationContainerRef>();  function onReady() {    routeNameRef.current = navigationRef.current.getCurrentRoute().name;  }  function onStateChange() {    const previousRouteName = routeNameRef?.current;    const currentRouteName = navigationRef?.current?.getCurrentRoute()?.name;    if (previousRouteName !== currentRouteName) {      logScreenView({ screen_name: currentRouteName, screen_class: currentRouteName });      routeNameRef.current = currentRouteName;    }  }  // Return main stack  return (<View style={{ flex: 1, backgroundColor: BLACK, opacity: 1 }}><ErrorBoundary><NavigationContainer ref={navigationRef as any} onReady={onReady} onStateChange={onStateChange}><SharedStack.Navigator screenOptions={modalOptions} mode="modal">            {getSharedScreens().map(({ name, options, component }, i) => {              // @ts-ignore              return <SharedStack.Screen key={i} name={name} options={options} component={component} />;            })}</SharedStack.Navigator></NavigationContainer></ErrorBoundary></View>  );};export default Navigation;

If anyone can help me understand hooks a bit better and help me out with this issue, would be greatly appreciated.


Viewing all articles
Browse latest Browse all 6287

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>