'React Storybook: Trying to set specific actions to different Templates

So, in the docs, it shows how to handle all onClick events for the default button. But, I want to return a different action name for each button.

But, it doesn't show how to do this.

It used to involve importing action from @storybook/addon-actions

But, it's changed since then. If I click on the 'Sign Up' button, I'd like to see the signUp action triggered. Hopefully that makes sense.

Here is my current code:

export default {
  title: 'Button',
  component: Button,
  argTypes: {
    onClick: {
      action: 'clicked'
    }
  }
} as ComponentMeta<typeof Button>;

const Template: ComponentStory<typeof Button> = (args) => <Button {...args} />;

export const Default = Template.bind({});
Default.args = {
  children: 'Primary',
  variant: 'primary',
}

export const Secondary = Template.bind({});
Secondary.args = {
  children: 'Secondary',
  variant: 'secondary',
  argTypes: {
    onClick: {
      action: 'Secondary clicked'
    }
  }
}


Solution 1:[1]

You can override Template.argTypes attribute on the Secondary component and achieve the same behavior.

export const Secondary = Template.bind({});
Secondary.args = {
  children: 'Secondary',
  variant: 'secondary',
}

Secondary.argTypes = {
  onClick: {
    action: 'Secondary clicked'
  }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1