UNPKG

8.98 kBTypeScriptView Raw
1/// <reference types="react" />
2/// <reference types="vue" />
3
4import Taro, { Config } from './index'
5
6declare module './index' {
7 // Components
8 interface ComponentLifecycle<P, S, SS = any> extends NewLifecycle<P, S, SS> {
9 componentWillMount?(): void
10 componentDidMount?(): void
11 componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void
12 shouldComponentUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): boolean
13 componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void
14 componentWillUnmount?(): void
15 componentDidShow?(): void
16 componentDidHide?(): void
17 componentDidCatchError?(err: string): void
18 componentDidNotFound?(obj: PageNotFoundObject): void
19 onPullDownRefresh?(): void
20 onReachBottom?(): void
21 onPageScroll?(obj: PageScrollObject): void
22 onShareAppMessage?(obj: ShareAppMessageObject): ShareAppMessageReturn
23 onTabItemTap?(obj: TabItemTapObject): void
24 onResize?(obj: PageResizeObject): void
25 }
26 interface ComponentOptions {
27 addGlobalClass?: boolean
28 styleIsolation?: 'isolated' | 'apply-shared' | 'shared'
29 }
30 interface ComponentClass<P = {}, S = any> extends StaticLifecycle<P, S> {
31 new (...args: any[]): Component<P, {}>
32 propTypes?: any // TODO: Use prop-types type definition.
33 defaultProps?: Partial<P>
34 displayName?: string
35 }
36 // ref: packages/taro-runtime/src/current.ts
37 interface RouterInfo<TParams extends Partial<Record<string, string>> = Partial<Record<string, string>>> {
38 /** 路由参数 */
39 params: TParams
40
41 /** 页面路径 */
42 path: string
43
44 onReady: string
45 onHide: string
46 onShow: string
47
48 shareTicket: string | undefined
49 scene: number | undefined
50 }
51 interface Component<P = {}, S = {}, SS = any> extends ComponentLifecycle<P, S, SS> {
52 $scope?: any
53 }
54 type PropsWithChildren<P> = P & { children?: React.ReactNode }
55 interface FunctionComponent<P = {}> {
56 (props: PropsWithChildren<P>, context?: any): React.ReactElement | null
57 propTypes?: any // TODO: Use prop-types type definition.
58 defaultProps?: Partial<P>
59 config?: Config
60 options?: ComponentOptions
61 externalClasses?: string[]
62 }
63 type FC<P = {}> = FunctionComponent<P>
64 interface StatelessFunctionComponent {
65 (): JSX.Element
66 }
67 type SFC = StatelessFunctionComponent
68
69 interface Show {
70 componentDidShow?(): void
71 componentDidHide?(): void
72 onShow?(): void
73 onHide?(): void
74 }
75 interface AppInstance extends Show {
76 mount(component: React.ComponentClass | Vue.ComponentOptions<Vue>, id: string, cb: () => void): void
77 componentDidShow?(options?: Record<string, unknown>): void
78 onShow?(options?: Record<string, unknown>): void
79 unmount(id: string, cb: () => void): void
80 }
81 type Target = Record<string, unknown> & { dataset: Record<string, unknown>; id: string }
82 interface MpEvent {
83 type: string
84 detail: Record<string, unknown>
85 target: Target
86 currentTarget: Target
87 }
88 interface PageLifeCycle extends Show {
89 onPullDownRefresh?(): void
90 onReachBottom?(): void
91 onPageScroll?(obj: { scrollTop: number }): void
92 onShareAppMessage?(obj: { from: string; target?: any; webViewUrl: string }): void
93 onResize?(options: unknown): void
94 onTabItemTap?(obj: { index: string; pagePath: string; text: string }): void
95 onTitleClick?(): void
96 onOptionMenuClick?(): void
97 onPopMenuClick?(): void
98 onPullIntercept?(): void
99 eh?(event: MpEvent): void
100 onLoad(options: Record<string, unknown>): void
101 onUnload(): void
102 }
103 interface ComponentInstance<
104 TData extends Record<string, unknown> = Record<string, unknown>,
105 TParams extends Record<string, string> = Record<string, string>
106 > {
107 /** 组件的文件路径 */
108 is?: string
109 /** 节点id */
110 id?: string
111 /** 节点dataset */
112 dataset?: string
113 /** 组件数据,包括内部数据和属性值 */
114 data?: TData
115 /** 组件数据,包括内部数据和属性值(与 data 一致) */
116 properties?: TData
117 /** 相对于当前自定义组件的 Router 对象 */
118 router?: RouterInfo<TParams>
119 /** 相对于当前自定义组件所在页面的 Router 对象 */
120 pageRouter?: RouterInfo<TParams>
121 /** 设置data并执行视图层渲染 */
122 setData?(newData: Partial<TData>): void
123 /** 检查组件是否具有 behavior (检查时会递归检查被直接或间接引入的所有behavior) */
124 hasBehavior?(behavior: unknown): boolean
125 /** 触发事件,参见[组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) */
126 triggerEvent?(name: string, detail: Record<string, unknown>, options: {
127 /** 事件是否冒泡 */
128 bubbles?: boolean
129 /** 事件是否可以穿越组件边界,为 false 时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部 */
130 composed?: boolean
131 /** 事件是否拥有捕获阶段 */
132 capturePhase?: boolean
133 }): void
134 /** 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内 */
135 createSelectorQuery?(): SelectorQuery
136 /** 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内 */
137 createIntersectionObserver?(): IntersectionObserver
138 /** 创建一个 MediaQueryObserver 对象 */
139 createMediaQueryObserver?(): MediaQueryObserver
140 /** 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响) */
141 selectComponent?<
142 TD extends Record<string, unknown> = Record<string, unknown>,
143 TP extends Record<string, string> = Record<string, string>
144 >(selector: string): ComponentInstance<TD, TP>
145 /** 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响) */
146 selectAllComponents?<
147 TD extends Record<string, unknown> = Record<string, unknown>,
148 TP extends Record<string, string> = Record<string, string>
149 >(selector: string): ComponentInstance<TD, TP>
150 /** 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响) */
151 selectOwnerComponent?<
152 TD extends Record<string, unknown> = Record<string, unknown>,
153 TP extends Record<string, string> = Record<string, string>
154 >(): ComponentInstance<TD, TP>
155 /** 获取这个关系所对应的所有关联节点,参见[组件间关系](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/relations.html) */
156 getRelationNodes?(relationKey: string): NodesRef[]
157 /** 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步) */
158 groupSetData?(callback: () => void): void
159 /** 返回当前页面的 custom-tab-bar 的组件实例,详见[自定义 tabBar](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html) */
160 getTabBar?(): ComponentInstance
161 /** 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内 */
162 getPageId?(): string
163 /** 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
164 animate?(selector: string, keyFrames: KeyFrame[], duration: number, callback: () => void): void
165 /** 滚动驱动的动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
166 animate?(selector: string, keyFrames: KeyFrame[], duration: number, scrollTimeline: ScrollTimelineOption): void
167 /** 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
168 clearAnimation?(selector: string, callback: () => void): void
169 /** 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
170 clearAnimation?(selector: string, options: ClearAnimationOptions, callback: () => void): void
171 /** 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
172 setUpdatePerformanceListener?(options: {
173 /** 是否返回变更的 data 字段信息 */
174 withDataPaths?: boolean
175 }, listener: () => void): void
176 }
177 interface PageInstance extends PageLifeCycle, ComponentInstance {
178 /** 页面配置 */
179 config?: PageConfig
180 data?: Record<string, unknown>
181 path?: string
182 options?: Record<string, unknown>
183 }
184 interface TaroStatic {
185 memo<P = {}>(
186 FunctionComponent: FunctionComponent<P>,
187 compare?: (oldProps: P, newProps: P) => boolean
188 ): FunctionComponent<P>
189 }
190}
191
\No newline at end of file