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