UNPKG

hapimini-cli

Version:
120 lines (100 loc) 2.72 kB
# Track > 用户行为追踪组件 ## 配置与引入 配置ComponentTracked中config.ts文件 ``` // 埋点接口链接 export const TrackUrl = 'https://www.google.com'; // 埋点接口静态参数 (不需要从外部传入) export const getTrackStaticParams = () => ({ appId: '', appKey: '', type: '', sessionId: '', datetime: +new Date() }); // 埋点接口动态参数接口 (需要从外部传入) export interface TrackDynamicParams { level: 1 | 2 | 3, eventId: string, eventName?: string, [k: string]: any } ``` 需要进行追踪的组件,继承ComponentTracked组件。特殊情况下,可以自定义埋点数据格式一并传入,自定义数据格式将覆盖默认接口。 ``` import {ComponentTracked, TrackDynamicParams} from '@/components/Track'; interface customTrackParams extends TrackDynamicParams{ key?: string } export default class Index extends ComponentTracked<{}, {}, customTrackParams> { ... } ``` ## App, Page级别使用 需要对生命周期进行埋点追踪时,配置组件内的trackConfig对象,trackConfig格式为 ``` [lifeCycle]: TrackDynamicParams | (() => TrackDynamicParams); ``` 其中didMount对应生命周期componentDidMount, willMount对应componentWillMount,以此类推。 ``` import {ComponentTracked, TrackConfig} from '@/components/Track'; export default class Index extends ComponentTracked { trackConfig: TrackConfig = { didMount: { level: 2, eventId: 'didMount' }, didShow() { // 为function时会自动绑定this为当前组件 return { level: 2, eventId: 'didShow' } }, willUnmount: {...}, didShow: {...}, didHide: {...}, didCatchError: {...} }; } ``` 若组件中同时定义了某声明周期的trackConfig和钩子函数,需要调用super方法手动执行父类同名方法,也可用于手动控制触发埋点请求时机。 ``` import {ComponentTracked, TrackConfig} from '@/components/Track'; export default class Index extends ComponentTracked { trackConfig: TrackConfig = { didMount: { level: 2, eventId: 'didMount' }, didShow() { return { level: 2, eventId: 'didShow' } }, }; componentDidMount() { super.componentDidMount(); ... } componentDidShow() { if (necessary) super.componentDidShow(); } } ``` ## Event级别使用 直接调用this.$track()方法,若无App, Page级别的使用,则无需配置trackConfig。 ``` import {ComponentTracked} from '@/components/Track'; export default class Index extends ComponentTracked { eventHandler() { this.$track({ level: 3, eventId: 'trigger' }) } } ```