I am using useContext to pass the account name to all the pages that I have created in app.js.
contextProvider.jsx
import { createContext, useState } from 'react';
export const LoginContext = createContext(null);
const ContextProvider = ({children}) => {
const [ account, setAccount ] = useState('');
return (
<LoginContext.Provider value={{ account, setAccount }}>
{children}
</LoginContext.Provider>
)
}
export default ContextProvider;
Now I am using it in app.js for making it available for all pages.
app.js
import ContextProvider from './context/ContextProvider';
export default function app(){
return (
<ContextProvider>
<BrowserRouter>
<Routes>
{/* home page where i changing the account value. My header component is wrapped inside this MainPage-component */}
<Route exact path='/home-services' element={<HouseDeckHomeServicesMainPage city={city} setCity={setCity} handleData={handleData} />} />
<Route exact path='/home-services/about-us' element={<HouseDeckHomeServicesAnotherPage />} />
</Routes>
</BrowserRouter>
</ContextProvider>
);
}
Then I recalling the variables in LoginContext from contextProvider.jsx to change or set them to a partcular value.
Header.jsx
export default function Header(){
const {account, setAccount} = React.useContext(LoginContext)
// let I am doing in header.jsx
setAccount("hello")
return (
<div>{account}</div>
)
}
Suppose i am doing setAccount("Hello") in my Header.jsx to change it. The LoginContext variable account changed. I checked by printing it.
Now I want to use the same value that I stored in account in other pages.
I don't know how to use that value.
Right now I am doing
AnotherPage.jsx
export default function AnotherPage() {
const {account} = React.useContext(LoginContext)
// I want to print the value of account that i changed from
// null to "hello" in this page but i am getting undefined
// here.
console.log(account)
return (
<div>{account}</div>
)
}
But it is taking the default value of account that is null which is not what I want. I want to use the changed value. Please help.