共享tracking的逻辑

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

eg. Adding analytics tracking across various components.

  • 一次实现,多次使用
  • 易于剔除, 我们的组件还是能保持很好的测试性,不会被这个tracking组件影响.
import tracker from './tracker.js';

// 高阶组件
const pageLoadTracking = (ComposedComponent) => class HOC extends Component {
  componentDidMount() {
    tracker.trackPageLoad(this.props.trackingData);
  }

  componentDidUpdate() {
    tracker.trackPageLoad(this.props.trackingData);
  }

  render() {
    return <ComposedComponent {...this.props} />
  }
};

// 用法
import LoginComponent from "./login";

const LoginWithTracking = pageLoadTracking(LoginComponent);

class SampleComponent extends Component {
  render() {
    const trackingData = {/** Nested Object **/};
    return <LoginWithTracking trackingData={trackingData}/>
  }
}

results matching ""

    No results matching ""