Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for the "Storybook preview hooks can only be called inside decorators and story functions." error #279

Merged
merged 2 commits into from
Jun 19, 2024

Conversation

adam-golab
Copy link
Contributor

Context for a bug:

I'm using a custom decorator to set the data-theme attribute in the html element:

// .storybook/preview.tsx

export const decorators = [
  (Story: ComponentType) => {
    const isDarkMode = useDarkMode();
    useEffect(() => {
      document.documentElement.dataset.theme = isDarkMode ? 'dark' : 'light';
    }, [isDarkMode]);
    return <Story />;
  },
];

When I add an interactivity to one of my components using hooks from @storybook/preview-api, for example the useArgs:

export const Checkbox: Story = {
  args: {
    selected: false,
    onClick: fn(),
  },
  render: (args) => {
    const [{ selected }, updateArgs] = useArgs();
    const onClick = (id: string) => {
      updateArgs({ selected: !selected });
      args.onClick();
    };
    return <Checkbox {...args} selected={selected} onClick={onClick} />;
  },
};

The bug:

Everything works properly until I switch the theme. When I switch it I'm getting an error Storybook preview hooks can only be called inside decorators and story functions.. I need to refresh the page to see the component with styles applied from the other theme. Looks like Storybook doesn't allow to use hooks from @storybook/preview-api when the story is nested into another component that use hooks imported directly from react

I've tested the fix on my project. Seems to fix the issue, as now I can switch themes and the components works without throwing any errors.

Versions:

Storybook: 8.0.8
storybook-dark-mode: 4.0.1

@hipstersmoothie hipstersmoothie merged commit 52fe0d9 into hipstersmoothie:master Jun 19, 2024
Copy link

🚀 PR was released in v4.0.2 🚀

@zigang93
Copy link

@hipstersmoothie this changes break previous behaviour #282

@Jintus
Copy link

Jintus commented Jul 1, 2024

I wasn't having the issue, since the 4.0.1 I'm having it.

@mohitkyadav
Copy link

I'm having the issue after upgrading to storybook 8 in both 4.0.1 and 4.0.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants