Storybook for React Native
Hello Experts, We all use Reusable Components in our applications OR we develop custom components that are frequently used at multiple places and keep that logic separate, so whenever we change on business logic it will be reflected everywhere where it is used. What happens if I say show me the component you developed, you need to import/implement it in one component and run the application, correct? Is there any way I can see all Reusable Components in one place, I can play with it, change various props and validate it? Yes it’s there.
What is a Storybook?
Storybook allows developers to write Story (Custom Component), Run Story, Play with various properties, Validate it without running actual application and without importing in any component. Storybook makes developer life more simple, developers can play with all Story (Custom Component) from one place — that’s called Storybook. Storybook integrates with most popular JavaScript UI frameworks like React, React Native, Angular, Vue and supports a server-rendered component framework such as Ruby on Rails.
What is a Story?
Story captures the rendered state of a UI Component. Developers can write multiple stories per component. Stories are written in Component Story Format (CSF) an ES6 module-based standard — for writing components.
Storybook Features —
Isolated component development
Deliver robust UIs
Addons to power up your workflow
Consistent user experience
Unit test components
Share & Reuse component
Installations —
Execute this command from within the root of your react native app:
npx -p @storybook/cli sb init — type react_native
You’ll be prompted asking if you want to install @storybook/react-native-server, you can safely choose not to install this now since you can add it later and it’s not required.
Run Storybook —
# Starts Storybook in development mode npm run storybook
Writing Stories —
Create Task Component
// 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> ); }
Create TaskStories
// 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' }}
Configuration
// 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;
Render All | Specific Stories
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);
AddOns —
Knobs —
npm i — save @storybook/addon-ondevice-knobs
Allow developers to adjust components props in real time.
Actions —
npm i — save @storybook/addon-ondevice-actions
Developer can verify onPress calls with actions that will log information in the actions tab.
Notes —
npm i — save @storybook/addon-ondevice-notes
Allow developers to add some markdown to your stories to help document their usage.
Background —
npm i — save @storybook/addon-ondevice-backgrounds
Allows developer to change the background of storybook to compare the look of your component against different backgrounds.
Thanks for reading Article!
The above is the detailed content of Storybook for React Native. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.
