import { useContext, createContext, useState } from 'react';
import { ReactNode } from 'react';
type User = {
id: string;
name: string;
email: string;
};
type UserContextProps = {
user: User;
setUser: React.Dispatch<React.SetStateAction<User>>;
};
const UserContext = createContext<UserContextProps | null>(null);
export function UserProvider({
children,
initialData,
}: {
children: ReactNode;
initialData: User;
}) {
const [user, setUser] = useState<User>(initialData);
return (
<UserContext.Provider value={{ user, setUser }}>
{children}
</UserContext.Provider>
);
}
export function useAppContext() {
const context = useContext(UserContext);
if (!context) {
throw new Error('useAppContext must be used within a UserProvider');
}
return context;
}
const initialUserData = {
id: '123',
name: 'John Doe',
email: 'john@example.com',
};
<UserProvider initialData={initialUserData}>
<PhoneTopUpContent />
</UserProvider>
Trong PhoneTopUpContent
const { user, setUser } = useAppContext();