• 共享tracking的逻辑

    共享tracking的逻辑

    使用高阶组件能在很多的UI组件中追踪逻辑.
    例如: 在许多组件中加入分析数据的追踪.

    eg. Adding analytics tracking across various components.

    • 一次实现,多次使用
    • 易于剔除, 我们的组件还是能保持很好的测试性,不会被这个tracking组件影响.
    1. import tracker from './tracker.js';
    2. // 高阶组件
    3. const pageLoadTracking = (ComposedComponent) => class HOC extends Component {
    4. componentDidMount() {
    5. tracker.trackPageLoad(this.props.trackingData);
    6. }
    7. componentDidUpdate() {
    8. tracker.trackPageLoad(this.props.trackingData);
    9. }
    10. render() {
    11. return <ComposedComponent {...this.props} />
    12. }
    13. };
    14. // 用法
    15. import LoginComponent from "./login";
    16. const LoginWithTracking = pageLoadTracking(LoginComponent);
    17. class SampleComponent extends Component {
    18. render() {
    19. const trackingData = {/** Nested Object **/};
    20. return <LoginWithTracking trackingData={trackingData}/>
    21. }
    22. }