import React, { useContext, createContext } from 'react'
// Hook: useContext
// Context API: createContext()
const SomeContext = createContext()
const valueToSharedAcrossAllComponents = {
someData: 'Some data to share'
};
const Provider = ({ children }) => {
return (
{children}
)
}
const useSomeContext = () => {
const someContext = useContext(SomeContext);
if (someContext === undefined) {
throw new Error(`useSomeContext debe ser usado dentro de Provider`)
}
return someContext;
}
// Usos del useContext y Context API
// Podemos usar useContext y Context API para enviar cierta información
// que queremos compartir en varios componentes que no se encuentran en
// el mismo nivel o padre.
// Por ejemplo: si queremos compartir el tema de la aplicación a todos los
// componentes de la aplicación.
const theme = { color: 'peru', fontFamily: 'Roboto' }
const ThemeContext = createContext()
const ThemeProvider = ({ theme, children }) => {
return {children}
}
const useTheme = () => {
const theme = useContext(ThemeContext);
if (theme === undefined) {
throw new Error(`useTheme debe ser usando dentro de ThemeProvider`)
}
return theme;
}