Mixin: controllerMixin

controllerMixin

An easy way to add Controller to an UIHandler. Adds getController function to the UI handler. The mixin takes Controller constructor parameters as parameter.
Mixes In:
Source:

Example

// LoadingHandler.js
class UIHandler extends StateHandler {
     setLoading (loading) {
         this.updateState({ loading });
     }
};
export const LoadingHandler = controllerMixin(UIHandler, ['setLoading']);

// LoadingButton.jsx
export const LoadingButton = ({loading, controller}) => (
    <div>
        { loading && <Spin /> }
        <Button onClick={() => controller.setLoading(!loading)}>
    </div>
);

// View.js
export class View {
    constructor () {
        this.loadingHandler = new LoadingHandler();
        this.loadingHandler.addStateListener(() => this.render());
    }
    render () {
        const state = this.loadingHandler.getState();
        const controller = this.loadingHandler.getController();
        ReactDom.render(<LoadingButton loading={state.loading} controller={controller} />, document);
    }
}