启动 根据该软件包的设计,开发人员可以完全控制其生命周期,包括初始化过程。 这意味着没有预初始化的全局组件 供开发人员使用。 他们必须自己创建组件。 为简化开发人员的工作流程,该软件包包含一些特殊函数,其前缀为 init 字符串。 这些函数会返回一个元组,其中包含初始化组件 的一个实例和一个清理函数,清理函数会移除该 init 函数产生的所有副作用。 下面就是一个例子: - import { initBackButton, initMainButton } from '@telegram-apps/sdk';$ a: o9 [: _. T+ M
9 D7 _& [% \, ?4 z3 S* z: K' K. Z- const [mb, cleanupMb] = initMainButton();
# S! d) H9 l, L% x. c - const [bb, cleanupBb] = initBackButton();
5 Q8 ?! E3 d/ L( x7 a
# ?" n' k. D3 q- y3 w J- // Clicking the MainButton hides it and shows the BackButton.
6 ^3 H1 a- Z$ l( k - mb.on('click', () => {1 u- j$ e* Y9 N6 M( Z7 j! ]
- mb.hide();
- d1 I$ r2 W( | - bb.show();
7 u; H$ Q8 }& c) X0 {# s5 A - });5 a% \6 o* [& h0 D
- ) ?6 z/ ]+ |/ L `- n# @6 ^1 M
- // Clicking the BackButton hides it and shows the MainButton.
4 ~8 i, ]! f( {8 F - bb.on('click', () => {. d- D9 P' f, z& O( @
- mb.show();
6 W) \$ P. z2 @9 [6 A: x - bb.hide();: Y7 h1 q+ `6 D5 @$ b$ c+ t
- });( c# F; w4 t. R
8 I2 W2 d+ h' I* y- // Configure the MainButton.
0 o9 f7 U: o. N4 K/ t) b e" k* g1 ?: O - mb% E5 w3 H/ S0 N
- .setBgColor('#ff0000')
# L7 ]6 @# [9 M& ] - .setTextColor('#ffffff')3 P3 X) S) X3 H2 Z! I, o" W: b" p
- .setText('Expand')# h/ y W: K# v# O
- .enable(): e# e I* f& a, `
- .show();
* Z! v4 C0 J6 |+ l) n$ H- f m - " v6 e0 ]% M5 q
- // When we don't need BackButton and MainButton anymore, we can
! u1 y e6 P0 J) Z9 z# t ~5 R - // perform a cleanup. After calling a cleanup, the initialized
5 y$ ?. w; N7 O3 W( a - // component will not receive any events.5 A7 K% }" p1 Z8 j- q% ^
- cleanupMb();
; a+ C" k: I$ O, V' l - cleanupBb();
复制代码INFO 请注意,只要本地没有 相关信息,就不能同步实例化某些组件。 使用每个组件的文档,了解 组件如何初始化。 事件组件实例通过 on 和 off 方法使用常见的事件监听方式。 下面是使用 BackButton 组件的示例 - import { initBackButton } from '@telegram-apps/sdk';' }- f: D5 i; B5 F
- 5 m. R1 @( ^( G2 X1 t
- const [bb] = initBackButton();
+ ]: L' e9 v. V$ W9 ~3 I ^( ~ - ( x% V$ q; |5 L* K9 F1 T" {
- // Clicking the BackButton hides it and shows the MainButton.
; ~7 } |% a; O$ v6 O - bb.on('click', () => {1 r: d% ~% g) v) K) X
- console.log('BackButton clicked.');
F* O4 M2 }) X9 } - });
复制代码 您可以在组件文档中找到支持的事件列表。. r$ P5 q" y7 a5 J1 F* X- y% {. O
方法支持几乎每个组件都能检查当前 Mini Apps 版本是否支持其方法。 要检查是否支持某些方法,开发人员应使用组件 instance supports() 函数。 例如 - import { BackButton } from '@telegram-apps/sdk';
2 Y1 L" O( X* Q, y5 M- ~ - , u0 g \# o, B
- let bb = new BackButton('6.0', ...);1 O, h$ k1 ^* o% d
- bb.supports('show'); // false+ n; O ~& g3 b/ S! K( w
# ]6 t" j: I s7 u3 K* I; y; [& H- bb = new BackButton('6.3', ...);2 j% y' v; ?/ {2 C' k
- bb.supports('hide'); // true
复制代码 某些组件支持附加方法 supportsParam ,可检查 方法参数是否受支持:- import { Utils } from '@telegram-apps/sdk';% w" i0 l% ~/ j: U3 r2 W
- ) U4 o" F7 a8 p1 `6 `
- let utils = new Utils('6.0', ...);. U' A: [" z5 F1 N- h7 S
- utils.supportsParam('openLink.tryInstantView'); // false, G# m0 m' e6 A3 G( h1 I
- % Q6 Z2 f3 N9 I6 p: ^/ R
- utils = new Utils('6.10', ...);
; r( C( C5 V* x7 N. f* q - utils.supportsParam('openLink.tryInstantView'); // true
复制代码TIP 建议在调用某些组件方法之前使用该功能,只要 能确保开发人员使用该功能。 各组件支持的方法列表见 各组件文档。 : c. o8 K8 O2 A4 g9 u- q- v e6 _
: ^ B/ Z! q0 i) i5 [8 Z- d |