0.3.1 • Published 9 years ago

react-components-controller v0.3.1

Weekly downloads
1
License
MIT
Repository
github
Last release
9 years ago

EXAMPLE CODE

----project.js-----
import React from 'react';
import ReactComponentsController from 'react-components-controller';
import PackageComponent from '/packages/somepackage/packege';
import ListingItem from './mods/ListingItem';
import Navbar from './mods/Navbar';

const Controller = new ReactComponentsController();
Controller.registerComponent('ListingItem', ListingItem);

export default () => (
    <div>
        <Navbar />
        <PackageComponent extendController={Controller} />
    </div>
);

----package.js----
import React from 'react';
import ReactComponentsController from 'react-components-controller';
import ListingWrapper from './components/ListingWrapper';
import ListingContainer from './components/ListingContainer';
import ListingItem from './components/ListingItem';
import ListingItemAvatar from './components/ListingItemAvatar';

const Controller = new ReactComponentsController();
Controller.registerComponent('ListingWrapper', ListingWrapper);
Controller.registerComponent('ListingContainer', ListingContainer);
Controller.registerComponent('ListingItem', ListingItem);
Controller.registerComponent('ListingItemAvatar', ListingItemAvatar);

export default ({extendController}) => {
    if(extendController){
        Controller.extendController(extendController);
    }
    return (
        <div>
            {Controller.getComponent('ListingWrapper',{ListingTitle:'Default lising'})}
        </div>
    );
}


----ListingWrapper.jsx---
import React from 'react';

export default ({Controller, ListingTitle}) => {
    if(extendController){
        Controller.extendController(extendController);
    }
    return (
        <div>
            {ListingTitle}
            {Controller.getComponent('ListingContainer',{ListingContainerTitle:'Default lising container title'})}
        </div>
    );
}

Methods

MethodAttributesDescription
registerComponentcomponentName: String component: ReactComponentoptions: ObjectRegister component in Controller
registerBeforeComponentcomponentName: String component: ReactComponentYou can register component to display before some basic register component
registerAfterComponentcomponentName: String component: ReactComponentYou can register component to display after some basic register component
registerComponentExtendcomponentName: String extend: Object options: ObjectYou can register components extend it will be extended after call extendController method
extendComponentcomponentName: String extend: Object options: ObjectYou can extend methods of registred components for example render method
extendControllercontroller: ReactComponentsControllerYou can overwrite and extend controller by another controller. All registred component with the same name will be overwrite
getComponentcomponentName: String props: Object options: ObjectRender registred component by his registration name

Methods description

registerComponent(componentName, component, options)

  • componentName - String name of virtual instance where Your component will be displayed
  • component - Component React Component to display
  • options - Object of additional information. You can use it in the component
const Controller = new ReactComponentsController();
Controller.registerComponent('ListingWrapper', testComponentWrapper);
Controller.registerComponent('ListingContainer', testComponentContainer);
Controller.registerComponent('ListingItem', testComponentItem);

registerBeforeComponent(componentName, component)

  • componentName - String name of virtual instance where main component will be displayed after this component
  • component - Component React Component to display
const Controller = new ReactComponentsController();
Controller.registerComponent('ListingWrapper', testComponentWrapper);
Controller.registerBeforeComponent('ListingWrapper', testComponentBefore);

registerAfterComponent(componentName, component)

  • componentName - String name of virtual instance where main component will be displayed before this component
  • component - Component React Component to display
const Controller = new ReactComponentsController();
Controller.registerComponent('ListingWrapper', testComponentWrapper);
Controller.registerAfterComponent('ListingWrapper', testComponentAfter);

registerComponentExtend(componentName, extend, options)

  • componentName - String name of virtual instance where main component will be displayed
  • extend - Object Object with function that will be extended and overwrite
  • options - Object of additional information. You can use it in the component
const Controller = new ReactComponentsController();
const Controller2 = new ReactComponentsController();

Controller.registerComponent('test1', testComponent);

Controller2.registerComponentExtend('test1', {
    testMethod(){
        return 'extended test method';
    },
    render(){
        return (<div>extended: {this.testMethod()}</div>);
    }
});
Controller2.registerComponent('test2', testComponent2);

Controller.extendController(Controller2);

extendComponent(componentName, extend, options)

  • componentName - String name of virtual instance where main component will be displayed
  • extend - Object Object with function that will be extended and overwrite
  • options - Object of additional information. You can use it in the component
const Controller = new ReactComponentsController();

Controller.registerComponent('test1', testComponent);

Controller.extendComponent('test1', {
    testMethod(){
        return 'extended test method';
    },
    render(){
        return (<div>extended: {this.testMethod()}</div>);
    }
});

extendController(controller)

  • controller - DynamicController more important controller that will overwrite old controller
const Controller = new ReactComponentsController();
const Controller2 = new ReactComponentsController();

Controller.registerComponent('test1', testComponent);

Controller2.registerComponent('test1', testComponent2);
Controller2.registerComponent('test2', testComponent2);

Controller.extendController(Controller2);

getComponent(componentName, props, options)

  • componentName - String name of virtual instance where Your component will be displayed
  • props - Object Props that React Component will have
  • options - Object additional information. You can use it in the component and overwrite defined options
const Controller = new ReactComponentsController();
Controller.registerComponent('test1', testComponent);


export default ({someParam}) => (
    <div>{Controller.getComponent('test1', someParam)}</div>
)
0.3.1

9 years ago

0.3.0

9 years ago

0.2.2

9 years ago

0.2.11

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.9

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago