Provides a declarative way to specify document.body.className in your react app. Supports server-side usage too.
Built with React Side Effect.
yarn add react-body-classname
Dependencies: React >= 0.13.0
importBodyClassNamefrom'react-body-classname';constBasic=()=>(<BodyClassNameclassName="helloworld"><h1>You ate a whole wheel of cheese?</h1></BodyClassName>);// -> document.body.className === "helloworld"constNested=()=>(<BodyClassNameclassName="outside"><div><BodyClassNameclassName="inside"><p>I‘m not even mad</p></BodyClassName></div></BodyClassName>);// -> document.body.className === "outside inside"constGoCrazy=()=>(<BodyClassNameclassName={Array(8).join(''/0)+' batman!'}><h1>I'm impressed</h1></BodyClassName>);// -> document.body.className === "NaNNaNNaNNaNNaNNaNNaN batman!"Note: Only supports a single child as props.
When using server-side, use BodyClassName.rewind()after rendering components to string to retrieve the combined class name. Then chuck that into your HTML template.
Important: This component keeps track of mounted instances, so if you don't call BodyClassName.rewind() you'll get a memory leak.