Code Monkey home page Code Monkey logo

react-registry's Introduction

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

JS Syntax

import { Registry } from 'react-registry';

class MyApp extends React.Component {
    render() {
        
        // Retrieve component from the registry
        const TitleComponent = Registry.get("title");
        
        // or
        
        // Retrieve the component and create an element with it.
        const titleComponent = Registry.createElement("title", {text: "Hello Registry"});
    
        return (
            <div>
                <TitleComponent text="HelloRegistry" />
                
                { /* or */ }
               
                {titleComponent}
            </div>
        )
    }
}

Component 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>
        )
    }
}

Advanced Usage

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

react-registry's People

Contributors

devnet-io avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.