English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk @1.x | 组件

开源社区 开源社区 10380 人阅读 | 0 人回复 | 2025-02-22

启动

根据该软件包的设计,开发人员可以完全控制其生命周期,包括初始化过程。 这意味着没有预初始化的全局组件 供开发人员使用。 他们必须自己创建组件。

为简化开发人员的工作流程,该软件包包含一些特殊函数,其前缀为 init 字符串。 这些函数会返回一个元组,其中包含初始化组件 的一个实例和一个清理函数,清理函数会移除该 init 函数产生的所有副作用。

下面就是一个例子:

  1. import { initBackButton, initMainButton } from '@telegram-apps/sdk';
    2 ~" M1 A+ N/ k3 Q

  2. " P) u' X$ t# c. H6 x
  3. const [mb, cleanupMb] = initMainButton();! K" a6 Z7 J5 E. m( l1 z4 b. J
  4. const [bb, cleanupBb] = initBackButton();
    ) a; I7 h/ D2 t8 u& Q8 S) D
  5. 1 S5 W% Q. g( K
  6. // Clicking the MainButton hides it and shows the BackButton.
    4 b  Z8 ?- n9 i9 b1 h; N: _; y
  7. mb.on('click', () => {4 F) |7 _* l* L$ q. b2 V$ o5 q8 }, w
  8.   mb.hide();% z* A' o5 _' K  q& k+ o
  9.   bb.show();
    1 I% {7 W5 T7 ]# y5 G5 x
  10. });4 O1 n% \( ~/ h2 ]. P

  11. ' A$ m6 z9 t' ^9 O3 F
  12. // Clicking the BackButton hides it and shows the MainButton.6 w& {- \# v! p
  13. bb.on('click', () => {; L9 {/ w6 L3 @5 j  U6 @" n/ V, z; d
  14.   mb.show();
    5 v. t0 L$ `/ a7 G1 q
  15.   bb.hide();5 j/ W- C% A. b4 W$ E3 P5 `9 P) M7 ^
  16. });! p  t; {* p' d; V
  17. 0 o) y& I+ ^9 V3 \; ?
  18. // Configure the MainButton.7 X8 l* U- }) B
  19. mb
    ! p+ S# J% \+ _2 i2 F: N+ E) E
  20.   .setBgColor('#ff0000')/ s; q! G1 a3 r( p
  21.   .setTextColor('#ffffff')
    " K7 e- W# ~% T; D$ a
  22.   .setText('Expand')" k, T8 }" D& s  f: _/ R
  23.   .enable()* F! |3 o2 o1 T5 {& i
  24.   .show();# r! |1 [2 [3 P$ O0 n7 u2 Z: Z
  25. 0 ^1 C, ]- Q6 E' C8 J
  26. // When we don't need BackButton and MainButton anymore, we can 9 p; R8 f. H+ R% c# m+ X6 c
  27. // perform a cleanup. After calling a cleanup, the initialized 9 F' [8 ]: R/ l8 X/ Y
  28. // component will not receive any events.
    * I; w3 C! n! @; U3 f
  29. cleanupMb();- q7 r& h+ i+ b; V/ W) a6 O- q( y5 J. s
  30. cleanupBb();
复制代码

INFO

请注意,只要本地没有 相关信息,就不能同步实例化某些组件。 使用每个组件的文档,了解 组件如何初始化。

事件

组件实例通过 on 和 off 方法使用常见的事件监听方式。 下面是使用 BackButton 组件的示例

  1. import { initBackButton } from '@telegram-apps/sdk';" X6 e: u( X; }+ X: f

  2. 6 n8 k7 `$ n, ~0 L8 E
  3. const [bb] = initBackButton();
    & f. n5 p) @: |6 ]

  4. / @5 V; y; ]* i, y
  5. // Clicking the BackButton hides it and shows the MainButton.( M+ H3 h2 [. r% b6 H) C! p; I
  6. bb.on('click', () => {7 D# G' x! T- N3 z2 F) o
  7.   console.log('BackButton clicked.');# Q, ~4 d1 P  S! j- m
  8. });
复制代码
您可以在组件文档中找到支持的事件列表。; \# K) W) u( G! Z
方法支持

几乎每个组件都能检查当前 Mini Apps 版本是否支持其方法。 要检查是否支持某些方法,开发人员应使用组件 instance supports() 函数。 例如

  1. import { BackButton } from '@telegram-apps/sdk';
    ! _2 r- r: e7 L( J/ M0 L! q
  2. ; K3 d; u* Z: P7 q5 I; Y: N  E/ s
  3. let bb = new BackButton('6.0', ...);
    5 @) n4 i. `' p8 J. H5 N" W9 P
  4. bb.supports('show'); // false, e/ y: m! z& m4 `

  5. , f6 d# T. c# G# Y6 b* C
  6. bb = new BackButton('6.3', ...);' U  x+ Y3 b& x. V
  7. bb.supports('hide'); // true
复制代码
某些组件支持附加方法 supportsParam ,可检查 方法参数是否受支持:
  1. import { Utils } from '@telegram-apps/sdk';
    " S& z! ?) D) A+ J. x/ H$ m" ^- i- t

  2. " |6 c( o2 I& e: U
  3. let utils = new Utils('6.0', ...);
    / ~; l& K4 v0 b  F# p; J# F
  4. utils.supportsParam('openLink.tryInstantView'); // false
    9 y) y& ?9 K2 q% l4 b; u8 V" m
  5. # `6 g. T* }/ Q
  6. utils = new Utils('6.10', ...);( @; R; T% j/ v- r" t; I6 B! t
  7. utils.supportsParam('openLink.tryInstantView'); // true
复制代码

TIP

建议在调用某些组件方法之前使用该功能,只要 能确保开发人员使用该功能。 各组件支持的方法列表见 各组件文档。


7 S: [1 h2 ]; A- S8 h2 f
& v; R1 m! N( x: W2 W- t
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则