When I try to use createContext()
the console gives me this error:
App.js:6 Uncaught TypeError: Cannot destructure property 'consoleLogFunction' of '(0 , react__WEBPACK_IMPORTED_MODULE_1__.useContext)(...)' as it is null.
I’ve seen others asking questions about this here in Stack Overflow but I can’t find a solution.
GlobalContext.js
import React from 'react'
import { createContext } from 'react'
export const AppContext = createContext();
function GlobalContext() {
const consoleLogFunction = () => {
console.log("ok")
}
return (
<AppContext.Provider value={{consoleLogFunction}}></AppContext.Provider>
)
}
export default GlobalContext
App.js
import "./index.css";
import { useContext, useEffect } from "react";
import { AppContext } from "./components/GlobalContext";
function App() {
const { consoleLogFunction } = useContext(AppContext);
useEffect(() => {
consoleLogFunction();
}, []);
return (
<AppContext>
<div>home</div>
</AppContext>
);
}
export default App;
2
Answers
hello man the problem is because
App
component is not wrapped insideGlobalContext
. and in theGlobalContext
component you should handle thechildren prop
.it will work when doing it like this example :
Hope this help.
You don’t need to export ‘AppContext’, creating the provider and exporting that is good enough.
Try this, I’ve also made a couple of modifications to make it easier to use the context later:
GlobalContext.js
Home.js
App.js