Skip to content

Instantly share code, notes, and snippets.

@brunosabot
Last active July 22, 2019 11:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brunosabot/f279be98e49c76c53c02398590747248 to your computer and use it in GitHub Desktop.
Save brunosabot/f279be98e49c76c53c02398590747248 to your computer and use it in GitHub Desktop.
/* providers/BeerProvider.jsx */
import React, {createContext, useState} from 'react';
export const BeerContext = createContext();
const BeerProvider = (props) => {
const [isAvailable, setIsAvailable] = useState(true);
const toggleAvailability = () => setIsAvailable(!isAvailable);
const value = {
actions: {setIsAvailable, toggleAvailability},
values: {isAvailable}
};
return (
<BeerContext.Provider {...props} value={value} />
);
}
export default BeerProvider;
/* components/Beer.jsx */
import React, {useContext} from 'react';
import { BeerContext } from '../providers/BeerProvider';
const Beer = ({ isAvailable }) => {
const {actions, values} = useContext(BeerContext);
return (
<>
<div>
I'm currently
{values.isAvailable ? ' ' : ' not '}
available for a beer
</div>
<button onClick={actions.toggleAvailability}>Change</button>
</>
);
}
export default Beer;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment