启动 根据该软件包的设计,开发人员可以完全控制其生命周期,包括初始化过程。 这意味着没有预初始化的全局组件 供开发人员使用。 他们必须自己创建组件。 为简化开发人员的工作流程,该软件包包含一些特殊函数,其前缀为 init 字符串。 这些函数会返回一个元组,其中包含初始化组件 的一个实例和一个清理函数,清理函数会移除该 init 函数产生的所有副作用。 下面就是一个例子: - import { initBackButton, initMainButton } from '@telegram-apps/sdk';
" h s) O4 z$ D- [& P - 9 R1 @# p# J {2 L8 e8 d6 S
- const [mb, cleanupMb] = initMainButton();
+ q% ], P+ X+ i# G6 _- O - const [bb, cleanupBb] = initBackButton();
- ^. E# I* J c9 @( L- Y: i - 0 `" |& p( b& A8 f, Q
- // Clicking the MainButton hides it and shows the BackButton.+ ^+ @ k! s9 _7 G/ X, G
- mb.on('click', () => {
: k% [& @2 }. `1 Q0 H+ { - mb.hide();; \8 b. a# Y: o4 a! z
- bb.show();
' Q6 b" w% r! C! w - });
! |" ^- W4 U3 n. e! h0 z& R3 Q
2 T' \* Z. H& k7 S- // Clicking the BackButton hides it and shows the MainButton.# |/ E; r6 \- E8 f8 o% T; U( ^; o" `
- bb.on('click', () => {% A9 S2 I7 s# d0 z
- mb.show();
& R' H3 e- M8 S! s+ l( S - bb.hide();- x+ Z2 e+ u* b8 H! X
- });& j' h6 v% P; q4 f& Z% H
- ' \* Y( T* H# n2 Q
- // Configure the MainButton.
: }1 |1 l+ u) l. y+ ^9 O - mb% R, f; ~8 O2 @. J. k
- .setBgColor('#ff0000')
" `* l' T1 Y6 X a% D) F - .setTextColor('#ffffff')& V: |3 ?$ E9 H6 T3 i& B8 Z9 I
- .setText('Expand')7 c4 s/ t) i; q
- .enable()
6 ^( A n% R/ }0 x - .show();5 ?7 z% X- _8 A7 Q5 v* F! L
# o+ A2 z& `7 U% K& v3 Y- // When we don't need BackButton and MainButton anymore, we can
; y H& I" X/ |# [( M - // perform a cleanup. After calling a cleanup, the initialized 3 z: [" M! w0 I" n$ l
- // component will not receive any events.7 f4 s) N# P/ v
- cleanupMb();3 F5 a8 t# o1 ^6 Q5 p" S0 `
- cleanupBb();
复制代码INFO 请注意,只要本地没有 相关信息,就不能同步实例化某些组件。 使用每个组件的文档,了解 组件如何初始化。 事件组件实例通过 on 和 off 方法使用常见的事件监听方式。 下面是使用 BackButton 组件的示例 - import { initBackButton } from '@telegram-apps/sdk';# D/ H& Q1 K4 h3 v3 A- u
- 4 k; H+ z9 x: @. g/ o6 r
- const [bb] = initBackButton();- w9 X$ \' b# v! h
! Y! g3 g' h3 j, t8 o5 L+ F- // Clicking the BackButton hides it and shows the MainButton.% F2 ^, ?$ V) r& _
- bb.on('click', () => {
! { p2 k7 {8 k7 t0 d" A - console.log('BackButton clicked.');* V! d, B" V0 M7 R; M
- });
复制代码 您可以在组件文档中找到支持的事件列表。
) q1 U( t+ G* n- C' Q2 R; _方法支持几乎每个组件都能检查当前 Mini Apps 版本是否支持其方法。 要检查是否支持某些方法,开发人员应使用组件 instance supports() 函数。 例如 - import { BackButton } from '@telegram-apps/sdk';
3 B* I9 W- E# d6 A9 `9 l; M
0 J4 n J, `3 j; ], n- let bb = new BackButton('6.0', ...);
1 M& Z; I6 h/ u7 u. R - bb.supports('show'); // false
% N0 `: }1 g9 q) f3 R+ a; \ - 8 n! m$ e* o6 E: G: ?
- bb = new BackButton('6.3', ...);0 b; t8 f9 x, E8 P" r" E1 E1 g. U
- bb.supports('hide'); // true
复制代码 某些组件支持附加方法 supportsParam ,可检查 方法参数是否受支持:- import { Utils } from '@telegram-apps/sdk';
U- D+ a0 c% L. w - : z/ q: R; u$ K3 }
- let utils = new Utils('6.0', ...);
8 U7 x: P& t( X* g8 V+ k - utils.supportsParam('openLink.tryInstantView'); // false
1 j4 E8 a" p Y4 U) C% Q
8 z' B6 ~& d% a4 n Y- utils = new Utils('6.10', ...);
9 Y2 I3 J8 x# x9 v2 e4 U6 ^ - utils.supportsParam('openLink.tryInstantView'); // true
复制代码TIP 建议在调用某些组件方法之前使用该功能,只要 能确保开发人员使用该功能。 各组件支持的方法列表见 各组件文档。 7 Y. b& Y2 B0 m1 u2 n2 y
- a( D4 Q7 B; E! C6 M# F& W
|