0

In my App i want the username and the role becoming back from the api global avaiable in other components, so i made the createContext Hook. But cant access the data in the other components.

I have this Files index.js

import React from 'react';
import { GlobalStateProvider } from './GlobalStateContext';
import Login from './Login';
import Order from './Order';

export default function App() {
  return (
    <GlobalStateProvider>
      <Login />
      <Order />
    </GlobalStateProvider>
  );
}

GlobalStateContext.js

import React, {createContext, useState} from 'react';

export const GlobalStateContext = createContext();

export const GlobalStateProvider = ({children}) => {
  const [shoppingcart, setShoppingcart] = useState([]);
  const [shoppingcartcounter, setShoppingcartcounter] = useState(0);
  const [shoppingcartvalue, setShoppingcartvalue] = useState(0);
  const [username, setUsername] = useState("default");
  const [role, setRole] = useState("no_role");
  const [currentdateformated, setCurrentdateformated] = useState("");

  return (
    <GlobalStateContext.Provider value={{username, setUsername, role, setRole, setRole,currentdateformated, setCurrentdateformated, shoppingcart, setShoppingcart, shoppingcartcounter, 
    setShoppingcartcounter,shoppingcartvalue, setShoppingcartvalue}}>
      {children}
    </GlobalStateContext.Provider>
  );
};

Order.js (part of)

import React, {useState, useEffect, useContext} from 'react';
import {ScrollView, Text, View, StyleSheet, Image} from 'react-native';
import {TouchableWithoutFeedback, TouchableOpacity} from 'react-native';
import {useIsFocused } from '@react-navigation/native';
import Meal from './Meal';
import { useRouter } from "expo-router";
import { GlobalStateContext } from './GlobalStateContext';

const Order = () => {

  const navigation = useRouter();
  const [meals, setmeals] = useState([]);
  const [currentdate, setCurrentdate] = useState(new Date());
  const isFocused = useIsFocused();

  const {username, shoppingcart,shoppingcartcounter,currentdateformated, setCurrentdateformated, setShoppingcartcounter} = useContext(GlobalStateContext);

I can't acces the data and getting this error message.

Uncaught Error Cannot read properties of undefined (reading 'username') Call Stack Order app/Order.js renderWithHooks node_modules/react-dom/cjs/react-dom.development.js mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js beginWork node_modules/react-dom/cjs/react-dom.development.js callCallback node_modules/react-dom/cjs/react-dom.development.js invokeGuardedCallbackDev node_modules/react-dom/cjs/react-dom.development.js invokeGuardedCallback node_modules/react-dom/cjs/react-dom.development.js beginWork$1 node_modules/react-dom/cjs/react-dom.development.js performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js workLoopSync node_modules/react-dom/cjs/react-dom.development.js renderRootSync node_modules/react-dom/cjs/react-dom.development.js performConcurrentWorkOnRoot node_modules/react-dom/cjs/react-dom.development.js workLoop node_modules/scheduler/cjs/scheduler.development.js flushWork node_modules/scheduler/cjs/scheduler.development.js performWorkUntilDeadline node_modules/scheduler/cjs/scheduler.development.js Collapse all 15 frames

Can anybody tell me why i cant' acces the data like username in Order.js ? Thank you

PropanBen
  • 1
  • 1

0 Answers0