Files
ionic-framework/packages/react/src/lifecycle/IonLifeCycleHOC.tsx
Manu MA 930b271a4a Master react (#18998)
* chore(): bump to beta 8

* fix(): IonFabButton href fix

* fix(react): support components with href attributes

* fix(): Prep work to break router out

* fix(): breaking react-router and react-core into own packages

* chore(): moving view stuff out of react-core

* chore(): dev build 8-1

* chore(): update to react beta 8

* chore(): fixes to deps

* fix(): removing IonAnchor in favor of IonRouterLink

* chore(): beta 9 release

* refactor(react): treeshake, minify, api

* wip

* fix(): react dev builds

* fix(): fixes to get app builds working again

* fix(): removing tgz file

* feat(): adding platform helper methods

* fix(): don't map attributes to props

* chore(): add test app

* feat(): copy css folder from core

* chore(): move rollup node resolve to devDependencies

* fix(): expose setupConfig()

* perf(): improve treeshaking

* fix(): removing crypto from generateUniqueId

* fix(): adding missing rollup dp

* fix(): test cleanup and fixes to make tests pass

* chore(): moving react to packages folder

* fix(): fixing react build due to move to packages

* feat(): adding missing IonInfiniteScrollContent component

* chore(): add automated testing using cypress

* fix(): adding option onDidDismiss to controller components

* 0.0.10 react

* wip

* fix(): removing deprecated React calls

* fix(): exporting setupConfig from core

* chore(): bump to 4.8.0-rc.0

* chore(): updating test-app deps and fixing test

* chore(): updates to react readme
2019-08-13 14:24:44 -06:00

55 lines
1.4 KiB
TypeScript

import React from 'react';
import { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';
export const withIonLifeCycle = (WrappedComponent: React.ComponentType<any>) => {
return class IonLifeCycle extends React.Component<any, any> {
context!: React.ContextType<typeof IonLifeCycleContext>;
componentRef = React.createRef<any>();
constructor(props: any) {
super(props);
}
componentDidMount() {
const element = this.componentRef.current;
this.context.onIonViewWillEnter(() => {
if (element && element.ionViewWillEnter) {
element.ionViewWillEnter();
}
});
this.context.onIonViewDidEnter(() => {
if (element && element.ionViewDidEnter) {
element.ionViewDidEnter();
}
});
this.context.onIonViewWillLeave(() => {
if (element && element.ionViewWillLeave) {
element.ionViewWillLeave();
}
});
this.context.onIonViewDidLeave(() => {
if (element && element.ionViewDidLeave) {
element.ionViewDidLeave();
}
});
}
render() {
return (
<IonLifeCycleContext.Consumer>
{context => {
this.context = context;
return (
<WrappedComponent ref={this.componentRef} {...this.props} />
);
}}
</IonLifeCycleContext.Consumer>
);
}
};
};