Jun 22, 2024
App, Card, Theme ButtonApp.js with minimal codecreateContextContext/UserContext.jsimport React, { createContext } from 'react';
const UserContext = createContext();
export default UserContext;
Context/UserProvider.jsimport React, { useState } from 'react';
import UserContext from './UserContext';
const UserProvider = ({ children }) => {
const [user, setUser] = useState(null);
return (
<UserContext.Provider value={{ user, setUser }}>
{children}
</UserContext.Provider>
);
};
export default UserProvider;
App component
import UserProvider from './Context/UserProvider';
const App = () => (
<UserProvider>
{/* Rest of your component */}
</UserProvider>
);
import React, { useState, useContext } from 'react';
import UserContext from '../Context/UserContext';
const Login = () => {
const { setUser } = useContext(UserContext);
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
// Handle Submit
const onSubmit = (e) => {
e.preventDefault();
setUser({ username, password });
};
// Component JSX
return (
<form onSubmit={onSubmit}>
<input type="text" value={username} onChange={(e) => setUsername(e.target.value)} placeholder="Username" />
<input type="password" value={password} onChange={(e) => setPassword(e.target.value)} placeholder="Password" />
<button type="submit">Submit</button>
</form>
);
};
export default Login;
import React, { useContext } from 'react';
import UserContext from '../Context/UserContext';
const Profile = () => {
const { user } = useContext(UserContext);
if (!user) return <p>Please log in</p>;
return <div>Welcome, {user.username}</div>;
};
export default Profile;
import React, { createContext, useState, useContext, useEffect } from 'react';
const ThemeContext = createContext();
export const ThemeProvider = ({ children }) => {
const [theme, setTheme] = useState('light');
const toggleTheme = () => setTheme(theme === 'light' ? 'dark' : 'light');
useEffect(() => {
document.documentElement.classList.remove('light', 'dark');
document.documentElement.classList.add(theme);
}, [theme]);
return (
<ThemeContext.Provider value={{ theme, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
};
export const useTheme = () => useContext(ThemeContext);
import React from 'react';
import { useTheme } from '../Context/ThemeContext';
const ThemeButton = () => {
const { theme, toggleTheme } = useTheme();
return (
<button onClick={toggleTheme}>
Switch to {theme === 'light' ? 'dark' : 'light'} mode
</button>
);
};
export default ThemeButton;
import React from 'react';
import { ThemeProvider } from './Context/ThemeContext';
import ThemeButton from './Components/ThemeButton';
import Card from './Components/Card';
const App = () => (
<ThemeProvider>
<ThemeButton />
<Card />
</ThemeProvider>
);