26
loading...
This website collects cookies to deliver better user experience
npx -p @storybook/cli sb init — type react_native
# Starts Storybook in development mode
npm run storybook
// components/Task.js
import * as React from 'react';
import { TextInput, SafeAreaView } from 'react-native';
import { styles } from '../constants/globalStyles';
export default function Task({ task: { id, title, state }, onArchiveTask, onPinTask }) {
return (
<SafeAreaView style={styles.ListItem}>
<TextInput value={title} editable={false} />
</SafeAreaView>
);
}
// components/Task.stories.js
import * as React from 'react';
import { View } from 'react-native';
import { styles } from '../constants/globalStyles';
import { storiesOf } from '@storybook/react-native';
import { action } from '@storybook/addon-actions';
import Task from './Task';
export const task = {
id: '1',
title: 'Test Task',
state: 'TASK_INBOX',
updatedAt: new Date(2018, 0, 1, 9, 0),
};
export const actions = {
onPinTask: action('onPinTask'),
onArchiveTask: action('onArchiveTask'),
};
storiesOf('Task', module)
.addDecorator(story => <View style={styles.TaskBox}>{story()}</View>)
.add('default', () => <Task task={task} {...actions} />)
.add('pinned', () => <Task task={{ ...task, state: 'TASK_PINNED' }} {...actions} />)
.add('archived', () => <Task task={{ ...task, state: 'TASK_ARCHIVED' }} {...actions} />);
// storybook/index.js
import { getStorybookUI, configure } from '@storybook/react-native';
import './rn-addons';
// import stories
configure(() => {
require('../components/Task.stories.js');
}, module);
const StorybookUIRoot = getStorybookUI({
asyncStorage: null,
});
export default StorybookUIRoot;
import { getStorybookUI, configure } from '@storybook/react-native';
import { name as appName } from './app.json';
import { AppRegistry } from 'react-native';
configure(() => {
require('./storybook/stories/Button/Button.stories.js'); // render all stories require(‘./storybook/stories’) - which contain all your stories
}, module);
const StorybookUIRoot = getStorybookUI({});
AppRegistry.registerComponent(appName, () => StorybookUIRoot);
npm i — save @storybook/addon-ondevice-knobs
npm i — save @storybook/addon-ondevice-actions
npm i — save @storybook/addon-ondevice-notes
npm i — save @storybook/addon-ondevice-backgrounds