0.5.0 • Published 6 years ago

react-registry v0.5.0

Weekly downloads
457
License
MIT
Repository
github
Last release
6 years ago

React Registry

GitHub license npm Build Status Coveralls github PRs Welcome

react-registry is a library for registering, retrieving, and creating React components.

Why use react-registry?

Easily define layouts in configuration files

  • Avoid hard coded lists of available components
  • Avoid importing every possible component (may require bundler setup)

Dynamically provide overrides for components based on custom conditions

  • Customize components per client in a SaaS environment
  • Provide upgrades to new versions of components seamlessly

react-registry also supports many other features such as multiple registries for organizing components, registry providers and wrappers for advanced retrieval options, and TypeScript interfaces to simplify registering components.

View full documentation

Getting started

npm install react-registry --save

Basic Usage

Registering a component

import { Registry } form 'react-registry';

class TitleComponent extends React.Component {
    render() {
        return (
            <div>
                <h1>{this.props.text}</h1>
                <p>{this.props.children}</p>
            <div>
        )
    }
}

Registry.register(TitleComponent, "title");

Note: to use this syntax without requiring the component to be imported later, the bundler may need to be configured appropriately.

Retrieving and Rendering a Component

JSX Syntax

import { Registered } from 'react-registry';

class MyApp extends React.Component {
    render() {
        return (
            <div>
                {/* Retrieve component from the registry and create React element */}

                <Registered id="title" text="Hello Registry">
                    <div>A child</div>
                </Registered>

                {/* Above is equivalent adding the component as if it was imported normally
                 *
                 * <TitleComponent text="Hello Registry">
                 *     <div>A child</div>
                 * </TitleComponent>
                 */}
            </div>
        )
    }
}

JS Syntax

import { Registry } from 'react-registry';

class MyApp extends React.Component {
    render() {
        return (
            <div>
                {/* Retrieve component from the registry and create React element  */}

                {Registry.createElement("title", {text: "Hello Registry"})} 
                
                {/* Above is equivalent adding the component as if it was imported normally
                 *
                 * React.createElement(TitleComponent, {text: "Hello Registry"});
                 */}
            </div>
        )
    }
}

Advanced Usage

For more advanced usage, such as providers, custom conditions, and separate registries, view the full documentation and browse the examples.