@storybook/addon-actions
Version:
Action Logger addon for storybook
70 lines (48 loc) • 2.92 kB
Markdown
[](https://greenkeeper.io/)
[](https://travis-ci.org/storybooks/storybook)
[](https://www.codefactor.io/repository/github/storybooks/storybook)
[](https://snyk.io/test/github/storybooks/storybook/8f36abfd6697e58cd76df3526b52e4b9dc894847)
[](https://bettercodehub.com/results/storybooks/storybook) [](https://codecov.io/gh/storybooks/storybook)
[](https://storybooks-slackin.herokuapp.com/)
Storybook Addon Actions can be used to display data received by event handlers in [Storybook](https://storybook.js.org).
This addon works with Storybook for:
[](https://github.com/storybooks/storybook/tree/master/app/react) and
[](https://github.com/storybooks/storybook/tree/master/app/react-native).

Install:
```sh
npm i -D @storybook/addon-actions
```
Then, add following content to `.storybook/addons.js`
import '@storybook/addon-actions/register';
Import the `action` function and use it to create actions handlers. When creating action handlers, provide a **name** to make it easier to identify.
> _Note: Make sure NOT to use reserved words as function names. [issues
```js
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
import Button from './button';
storiesOf('Button', module)
.add('default view', () => (
<Button onClick={ action('button-click') }>
Hello World!
</Button>
))
```
If you wish to process action data before sending them over to the logger, you can do it with action decorators.
`decorateAction` takes an array of decorator functions. Each decorator function is passed an array of arguments, and should return a new arguments array to use. `decorateAction` returns a function that can be used like `action` but will log the modified arguments instead of the original arguments.
```js
import { action, decorateAction } from '@storybook/addon-actions'
import Button from './button';
const firstArgAction = decorateAction([
args => args.slice(0, 1)
]);
storiesOf('Button', module)
.add('default view', () => (
<Button onClick={ firstArgAction('button-click') }>
Hello World!
</Button>
))
```