UNPKG

@agreejs/agree

Version:
212 lines (179 loc) 6.67 kB
/// <reference types="react" /> /// <reference types="vue" /> /// <reference path="agree.lifecycle.d.ts" /> /// <reference path="agree.config.d.ts" /> declare namespace Agree { // Components interface ComponentLifecycle<P, S, SS = any> extends NewLifecycle<P, S, SS> { componentWillMount?(): void componentDidMount?(): void componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void shouldComponentUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): boolean componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void componentWillUnmount?(): void componentDidShow?(): void componentDidHide?(): void componentDidCatchError?(err: string): void componentDidNotFound?(obj: PageNotFoundObject): void onPullDownRefresh?(): void onReachBottom?(): void onPageScroll?(obj: PageScrollObject): void onShareAppMessage?(obj: ShareAppMessageObject): ShareAppMessageReturn onTabItemTap?(obj: TabItemTapObject): void onResize?(obj: any): void } interface ComponentOptions { addGlobalClass?: boolean styleIsolation?: 'isolated' | 'apply-shared' | 'shared' } interface ComponentClass<P = {}, S = any> extends StaticLifecycle<P, S> { new (...args: any[]): Component<P, {}> propTypes?: any // TODO: Use prop-types type definition. defaultProps?: Partial<P> displayName?: string } // ref: packages/agree-runtime/src/current.ts interface RouterInfo<TParams extends Partial<Record<string, string>> = Partial<Record<string, string>>> { /** * 路由参数。 */ params: TParams /** * 页面路径。 */ path: string onReady: string onHide: string onShow: string shareTicket: string | undefined scene: number | undefined } interface Component<P = {}, S = {}, SS = any> extends ComponentLifecycle<P, S, SS> { $scope?: any } class Component<P, S> { constructor(props?: Readonly<P>) /** * @deprecated * @see https://reactjs.org/docs/legacy-context.html */ constructor(props?: P, context?: any) config?: Config options?: ComponentOptions $componentType: 'PAGE' | 'COMPONENT' $router: RouterInfo $preloadData: any /** * 使用 `this.$preload` 函数进行页面跳转传参 * @example this.$preload('key', 'val'); * @example this.$preload({ x: 1, y: 2 }); * @see https://nervjs.github.io/agree/docs/best-practice.html */ $preload(key: string, value: any): void $preload(key: object): void setState<K extends keyof S>( state: ((prevState: Readonly<S>, props: P) => Pick<S, K> | S) | (Pick<S, K> | S), callback?: () => any ): void forceUpdate(callBack?: () => any): void render(): React.ReactNode readonly props: Readonly<P> & Readonly<{ children?: React.ReactNode }> state: Readonly<S> context: any refs: { [key: string]: any } } type PropsWithChildren<P> = P & { children?: React.ReactNode } interface FunctionComponent<P = {}> { (props: PropsWithChildren<P>, context?: any): React.ReactElement | null propTypes?: any // TODO: Use prop-types type definition. defaultProps?: Partial<P> config?: Config options?: ComponentOptions externalClasses?: string[] } type FC<P = {}> = FunctionComponent<P> interface StatelessFunctionComponent { (): JSX.Element } type SFC = StatelessFunctionComponent class PureComponent<P = {}, S = {}> extends Component<P, S> {} function memo<P = {}>( FunctionComponent: FunctionComponent<P>, compare?: (oldProps: P, newProps: P) => Boolean ): FunctionComponent<P> interface Show { componentDidShow?(options?: unknown): void componentDidHide?(options?: unknown): void onShow?(options?: unknown): void onHide?(options?: unknown): void } interface AppInstance extends Show { mount(component: React.ComponentClass | Vue.ComponentOptions<Vue>, id: string, cb: () => void): void unmount(id: string, cb: () => void): void } type Target = Record<string, unknown> & { dataset: Record<string, unknown>; id: string } interface MpEvent { type: string detail: Record<string, unknown> target: Target currentTarget: Target } interface PageLifeCycle extends Show { onPullDownRefresh?(): void onReachBottom?(): void onPageScroll?(obj: { scrollTop: number }): void onShareAppMessage?(obj: { from: string; target?: any; webViewUrl: string }): void onResize?(options: unknown): void onTabItemTap?(obj: { index: string; pagePath: string; text: string }): void onTitleClick?(): void onOptionMenuClick?(): void onPopMenuClick?(): void onPullIntercept?(): void eh?(event: MpEvent): void onLoad(options: Record<string, unknown>): void onUnload(): void } interface PageInstance extends PageLifeCycle { /** * 页面配置。 */ config?: PageConfig data?: Record<string, unknown> path?: string options?: Record<string, unknown> /** * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) **/ animate?(selector: string, keyFrames: KeyFrame[], duration: number, callback: () => void): void /** * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) **/ animate?( selector: string, keyFrames: ScrollTimelineKeyframe[], duration: number, scrollTimeline: ScrollTimelineOption ): void /** * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) **/ clearAnimation?(selector: string, callback: () => void): void /** * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) **/ clearAnimation?(selector: string, options: ClearAnimationOptions, callback: () => void): void } }