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

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

回答

收藏

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

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

启动

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

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

下面就是一个例子:

  1. import { initBackButton, initMainButton } from '@telegram-apps/sdk';$ a: o9 [: _. T+ M

  2. 9 D7 _& [% \, ?4 z3 S* z: K' K. Z
  3. const [mb, cleanupMb] = initMainButton();
    # S! d) H9 l, L% x. c
  4. const [bb, cleanupBb] = initBackButton();
    5 Q8 ?! E3 d/ L( x7 a

  5. # ?" n' k. D3 q- y3 w  J
  6. // Clicking the MainButton hides it and shows the BackButton.
    6 ^3 H1 a- Z$ l( k
  7. mb.on('click', () => {1 u- j$ e* Y9 N6 M( Z7 j! ]
  8.   mb.hide();
    - d1 I$ r2 W( |
  9.   bb.show();
    7 u; H$ Q8 }& c) X0 {# s5 A
  10. });5 a% \6 o* [& h0 D
  11. ) ?6 z/ ]+ |/ L  `- n# @6 ^1 M
  12. // Clicking the BackButton hides it and shows the MainButton.
    4 ~8 i, ]! f( {8 F
  13. bb.on('click', () => {. d- D9 P' f, z& O( @
  14.   mb.show();
    6 W) \$ P. z2 @9 [6 A: x
  15.   bb.hide();: Y7 h1 q+ `6 D5 @$ b$ c+ t
  16. });( c# F; w4 t. R

  17. 8 I2 W2 d+ h' I* y
  18. // Configure the MainButton.
    0 o9 f7 U: o. N4 K/ t) b  e" k* g1 ?: O
  19. mb% E5 w3 H/ S0 N
  20.   .setBgColor('#ff0000')
    # L7 ]6 @# [9 M& ]
  21.   .setTextColor('#ffffff')3 P3 X) S) X3 H2 Z! I, o" W: b" p
  22.   .setText('Expand')# h/ y  W: K# v# O
  23.   .enable(): e# e  I* f& a, `
  24.   .show();
    * Z! v4 C0 J6 |+ l) n$ H- f  m
  25. " v6 e0 ]% M5 q
  26. // When we don't need BackButton and MainButton anymore, we can
    ! u1 y  e6 P0 J) Z9 z# t  ~5 R
  27. // perform a cleanup. After calling a cleanup, the initialized
    5 y$ ?. w; N7 O3 W( a
  28. // component will not receive any events.5 A7 K% }" p1 Z8 j- q% ^
  29. cleanupMb();
    ; a+ C" k: I$ O, V' l
  30. cleanupBb();
复制代码

INFO

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

事件

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

  1. import { initBackButton } from '@telegram-apps/sdk';' }- f: D5 i; B5 F
  2. 5 m. R1 @( ^( G2 X1 t
  3. const [bb] = initBackButton();
    + ]: L' e9 v. V$ W9 ~3 I  ^( ~
  4. ( x% V$ q; |5 L* K9 F1 T" {
  5. // Clicking the BackButton hides it and shows the MainButton.
    ; ~7 }  |% a; O$ v6 O
  6. bb.on('click', () => {1 r: d% ~% g) v) K) X
  7.   console.log('BackButton clicked.');
      F* O4 M2 }) X9 }
  8. });
复制代码
您可以在组件文档中找到支持的事件列表。. r$ P5 q" y7 a5 J1 F* X- y% {. O
方法支持

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

  1. import { BackButton } from '@telegram-apps/sdk';
    2 Y1 L" O( X* Q, y5 M- ~
  2. , u0 g  \# o, B
  3. let bb = new BackButton('6.0', ...);1 O, h$ k1 ^* o% d
  4. bb.supports('show'); // false+ n; O  ~& g3 b/ S! K( w

  5. # ]6 t" j: I  s7 u3 K* I; y; [& H
  6. bb = new BackButton('6.3', ...);2 j% y' v; ?/ {2 C' k
  7. bb.supports('hide'); // true
复制代码
某些组件支持附加方法 supportsParam ,可检查 方法参数是否受支持:
  1. import { Utils } from '@telegram-apps/sdk';% w" i0 l% ~/ j: U3 r2 W
  2. ) U4 o" F7 a8 p1 `6 `
  3. let utils = new Utils('6.0', ...);. U' A: [" z5 F1 N- h7 S
  4. utils.supportsParam('openLink.tryInstantView'); // false, G# m0 m' e6 A3 G( h1 I
  5. % Q6 Z2 f3 N9 I6 p: ^/ R
  6. utils = new Utils('6.10', ...);
    ; r( C( C5 V* x7 N. f* q
  7. utils.supportsParam('openLink.tryInstantView'); // true
复制代码

TIP

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

: c. o8 K8 O2 A4 g9 u- q- v  e6 _

: ^  B/ Z! q0 i) i5 [8 Z- d
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则