I have a project which created in “Creat React App” and i have an useState array which looks like this:
JavaScript
x
2
1
const [State, setState] = useState([]);
2
This array is in another folder inside a component called StateComp
, but i also want to load this array in the main folder (App.js
for this case).
I tried to just import the State
and the setState
from the StateComp
file into the App.js
file, but as i expected, the import itself failed.
Anyone have any idea?
Advertisement
Answer
You can use React Context to manage this or Redux. Here’s an example with React Context:
src/providers/StateProvider.js
JavaScript
1
23
23
1
import React, { useContext, useState } from "react";
2
3
import { createContext } from "react";
4
5
const StateContext = createContext({
6
state: [],
7
setState: () => {},
8
});
9
10
export const useStateContext = () => useContext(StateContext);
11
12
const StateProvider = ({ children }) => {
13
const [state, setState] = useState([]);
14
15
return (
16
<StateContext.Provider value={{ state, setState }}>
17
{children}
18
</StateContext.Provider>
19
);
20
};
21
22
export default StateProvider;
23
src/App.js
JavaScript
1
9
1
import React from "react";
2
import { useStateProvider } from "./providers/StateProvider";
3
4
export default App = () => {
5
const { state, setState } = useStateProvider();
6
7
return <h1>MyApp</h1>;
8
};
9
src/index.js
JavaScript
1
18
18
1
import React from "react";
2
import ReactDOM from "react-dom/client";
3
import "./index.css";
4
import App from "./App";
5
import reportWebVitals from "./reportWebVitals";
6
import StateProvider from "./providers/StateProvider";
7
8
const root = ReactDOM.createRoot(document.getElementById("root"));
9
root.render(
10
<React.StrictMode>
11
<StateProvider>
12
<App />
13
</StateProvider>
14
</React.StrictMode>
15
);
16
17
reportWebVitals();
18