const UserContext = createContext();
function App() {
const [user, setUser] = useState(null);
return (
<UserContext.Provider value={{ user, setUser }}>
<Dashboard />
</UserContext.Provider>
);
}
function Dashboard() {
const { user } = useContext(UserContext);
return <div>Welcome {user?.name}</div>;
}
const ThemeContext = createContext();
const UserContext = createContext();
function App() {
return (
<ThemeContext.Provider value="dark">
<UserContext.Provider value={{ name: 'John' }}>
<Content />
</UserContext.Provider>
</ThemeContext.Provider>
);
}
const UserContext = createContext();
const UserDispatchContext = createContext();
function UserProvider({ children }) {
const [user, setUser] = useState(null);
return (
<UserContext.Provider value={user}>
<UserDispatchContext.Provider value={setUser}>
{children}
</UserDispatchContext.Provider>
</UserContext.Provider>
);
}
function UserName() {
const user = useContext(UserContext);
return <div>{user.name}</div>;
}
function UpdateButton() {
const setUser = useContext(UserDispatchContext);
return <button onClick={() => setUser({ name: 'New' })}>Update</button>;
}
const StateContext = createContext();
const DispatchContext = createContext();
function reducer(state, action) {
switch (action.type) {
case 'SET_USER':
return { ...state, user: action.payload };
case 'SET_THEME':
return { ...state, theme: action.payload };
default:
return state;
}
}
function AppProvider({ children }) {
const [state, dispatch] = useReducer(reducer, {
user: null,
theme: 'light'
});
return (
<StateContext.Provider value={state}>
<DispatchContext.Provider value={dispatch}>
{children}
</DispatchContext.Provider>
</StateContext.Provider>
);
}