Skip to content

Instantly share code, notes, and snippets.

@NicholasEli
Created November 4, 2021 00:17
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 NicholasEli/a03711bea89d33dcaa5d355c6350a6fc to your computer and use it in GitHub Desktop.
Save NicholasEli/a03711bea89d33dcaa5d355c6350a6fc to your computer and use it in GitHub Desktop.
useEncapsulation
// Cleaner way to manage state and its handlers
import React, { useState, useMemo } from 'react';
const Home = (props) => {
const [count, { inc, dec }] = useCounter();
return (
<main id="home-component" className="component-container">
<h5>Count {count}</h5>
<a onClick={() => inc(count)}>Inc.</a>
<a onClick={() => dec(count)}>Dec.</a>
</main>
);
};
const useCounter = () => {
const [state, update] = useState(0);
const handlers = useMemo(() => ({
inc: (n) => update(n + 1),
dec: (n) => update(n - 1),
}));
return [state, handlers];
};
export default Home;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment