use-controlled-state
Managing controlled / uncontrolled values can be tedious, and maintaining the duplication between stateful and stateless components can be exhausting. use-controlled-state abstracts
this pain away into a simple hook.
See this CodeSandbox for an example
Why
Consider a <Collapsible />
component. In most cases you just want a simple collapsible where you don't have to think about managing state where you use the component
<Collapsible ="Open collapsible"> <div> now visible!</div></Collapsible>
As requirements evolve, the parent component might have to decide when the Collapsible component opens and closes. You'd have to move state up to a higher component To be able to use it:
<> <Collapsible = = /> <div>Collapsible is open? ``</div></>
Common solutions you see for this pattern involve calling the onChange/setState
prop in component lifecyles to keep the state in sync. This hook abstracts away the pains of supporting both APIs
;
Now you can use the component with a controlled and uncontrolled API
<React.Fragment> <Collapsible ="Hello">Content</Collapsible> <Collapsible = = /></React.Fragment>