react-native-example-viewer

0.0.3 • Public • Published

react-native-example-viewer

Include examples for your app's components in the same files as the components and make them viewable in isolation.

THIS IS NOT PROPERLY DOCUMENTED YET, IT'S REALLY NOT READY FOR ANYONE ELSE TO USE.

Very similar to React Native Storybook, the way you define examples/stories is a bit different and this runs entirely within the simulator/device instead of having the list of components as a seperate web thing. React Native Storybook is way more polishd and you should almost certainly use that instead of this.

Written by Thomas Parslow (almostobsolete.net and tomparslow.co.uk) as part of Active Inbox (activeinboxhq.com).

Installation

npm install --save react-native-example-viewer

Usage

In your startup file (probably named index.ios.js/index.android.js) replace the AppRegister line with:

const EXAMPLE_VIEWER = __DEV__;

if (EXAMPLE_VIEWER) {
  const makeExampleViewer = require('react-native-example-viewer');
  const modules = [
    require('./js/components/MyButton'),
    require('./js/components/AnotherComponent'),
  ];

  AppRegistry.registerComponent('appname', () => makeExampleViewer(modules, MakeApp));
} else {
  AppRegistry.registerComponent('appname', () => MyApp);
}

Then at the bottom of each component file:

....component definition stuff...

export const __examples__ = {
  title: 'MyButton',
  presets: {
    'default': {label: 'hello'},
    'short label': {label: '1'},
    'long label': {label: 'What happens when we have a really long label'},
  },
  reducer: {
    // When we get the "pressed" action we change the label to "Pressed!"
    pressed: (state:any, action:any) => ({label: 'Pressed!'})
  },
  render (state:any, makeAction:any) {
    return <ActionButton label={state.label} onPress={makeAction('pressed')}/>;
  }
}

The presets list should at a minimum contain a default entry, they define preset states which can be switched between by the viewer.

To test more dynamic stuff you can supply reducers for each named action. You can create action functions to pass into your component by calling the makeAction function passed into the render function.

Package Sidebar

Install

npm i react-native-example-viewer

Weekly Downloads

0

Version

0.0.3

License

MIT

Last publish

Collaborators

  • almost