I wonder, what is the "Best Practice" for mocking React States in Storybooks (e.g. *.stories.js).
Currently I'm trying to implement a Dark Theme Switch.
- App Component has a state called "darkState", which can be set true/false
- App Component has a handler "handleThemeChange()", which changes MUI Theme, based upon "darkState"
- Header Component has a Switch or Button with "onChange()" which triggers "handleThemeChange()" in App Component
- The MUI Switch needs a state in order to work properly (at least I guess it does)
So, I decided to mock the state in my stories file. But writing this in a decorators seems ... strange. How do you solve this problem?
/components/Header/Header.stories.js
import React, { useState } from "react";
import { Header } from "./Header";
export default {
title: "Components/Header",
component: Header,
decorators: [
(StoryFn) => {
// mock state
const [darkState, setDarkState] = useState(false);
const handleThemeChange = () => {
setDarkState(!darkState);
return darkState;
};
return (
<Header
enableThemeChange={true}
handleThemeChange={handleThemeChange}
darkState={darkState}
/>
);
}
]
};
const Template = (args) => <Header {...args} />;
export const Default = Template.bind({});
// define Controls
Default.args = {
enableThemeChange: true,
darkState: true
};