Collection of commonly used React hooks.
Add @mediamonks/react-kit
to your project:
npm i @mediamonks/react-kit
Use a hook inside a component:
import { useToggle } from '@mediamonks/react-kit';
function DemoComponent() {
const [state, toggle] = useToggle(false);
return (
<div>
<div>{state} </div>
<button onClick={() => toggle()}>Toggle</button>
</div>
);
}
https://mediamonks.github.io/react-kit/
The information below should help you develop new hooks in this library.
Run npm run test -- --watch
to run all unit tests in watch mode.
Run npm run storybook
to preview your stories and documentation.
useHookName
useHookName.ts
– The Hook itselfuseHookName.stories.tsx
– To showcase the hook with a working UI, also used for dom testinguseHookName.stories.mdx
– Documentation about the hookuseHookName.test.tsx
– Unit tests for the hookRun the plop
script and enter your hook name starting with use
.
npm run plop
Which will execute the following steps, where you need to fill in the content.
ts
file with the hook
use
prefix for the name of the hookindex.ts
Hooks can be tested using the renderHook
function that now exists in @testing-library/react
.
At the time of writing, this method is undocumented. It can be used as follows:
import { renderHook } from '@testing-library/react';
// init the hook
const { result, rerender, unmount } = renderHook(useToggle, {
// values passed to your hook
initialProps: { foo: 'bar' },
});
// inspect the response of the hook
console.log(result.current);
To interact with your hook, you must use the act
function.
import { act, renderHook } from '@testing-library/react';
// init the hook
const { result, rerender, unmount } = renderHook(useToggle, {
// values passed to your hook
initialProps: { foo: 'bar' },
});
// inspect the response of the hook
console.log(result.current);
act(() => {
// interact with your hook
result.current[1]();
});
// inspect the updated value of the hook
console.log(result.current);