Norbert de Langen 113e0582d2
Merge branch 'next' into future/move-code-into-directory
# Conflicts:
#	.vscode/launch.json
#	CONTRIBUTING.old.md
#	code/lib/cli/tsconfig.json
#	scripts/tsconfig.json
2022-07-26 08:33:57 +02:00

43 lines
1.3 KiB
Markdown

# Storybook Channel
Storybook Channel is similar to an EventEmitter.
Channels are used with Storybook implementations to send/receive events between the Storybook Manager and the Storybook Renderer.
```js
class Channel {
addListener(type, listener) {}
addPeerListener(type, listener) {} // ignore events from itself
emit(type, ...args) {}
eventNames() {}
listenerCount(type) {}
listeners(type) {}
on(type, listener) {}
once(type, listener) {}
prependListener(type, listener) {}
prependOnceListener(type, listener) {}
removeAllListeners(type) {}
removeListener(type, listener) {}
}
```
The channel takes a Transport object as a parameter which will be used to send/receive messages. The transport object should implement this interface.
```js
class Transport {
send(event) {}
setHandler(handler) {}
}
```
Currently, channels are baked into storybook implementations and therefore this module is not designed to be used directly by addon developers. When developing addons, use the `getChannel` method exported by `@storybook/addons` module. For this to work, Storybook implementations should use the `setChannel` method before loading addons.
```js
import { addons } from '@storybook/addons';
const channel = addons.getChannel();
```
---
For more information visit: [storybook.js.org](https://storybook.js.org)