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

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

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk-vue

开源社区 开源社区 11574 人阅读 | 0 人回复 | 2025-02-25

Vue.js 软件包提供开发人员在开发迷你应用程序时可能会用到的实用工具。6 q3 @6 E/ r0 Y( f4 b& J% o1 U
$ g( B. o9 l; d4 O, X1 V0 N7 S

TIP

由于此软件包提供了扩展 @telegram-apps/sdk 功能的实用功能,建议先查看 SDK 软件包的 文档。


" A6 F2 _* V/ N8 ]# Y
  Y9 H, Q6 u) k. ^8 r安装

在继续之前,假定您已经安装了 vue 软件包,因为它是此软件包的 的同级依赖关系。

pnpm :

  1. pnpm i @telegram-apps/sdk-vue
复制代码

npm :

  1. npm i @telegram-apps/sdk-vue
复制代码

yarn :

  1. yarn add @telegram-apps/sdk-vue
复制代码

INFO

此软件包完全重新导出了 @telegram-apps/sdk 软件包,因此 您无需单独安装它。

用法

下面是该软件包的一个简单使用示例:

index.tsx

  1. import { createApp } from 'vue';/ a; F/ l0 r3 s) [) ]# |/ a
  2. import { init, backButton } from '@telegram-apps/sdk-vue';' K2 l2 l: s$ A( ^+ ?

  3. " n6 p$ C( x7 l5 {: i5 v4 y8 M1 G
  4. import { BackButton } from './BackButton.vue';
    & B6 v8 v5 l0 Y# c8 d: C

  5. 8 G; ~, m5 T# q2 [9 J: g
  6. // Initialize the package.6 r$ U+ r7 R6 I
  7. init();) L4 V7 V! E  F% ?& h: a
  8. : o0 O( s/ D& V: w
  9. const app = createApp(BackButton);
    # Z& i. ]- `  x+ _; T+ C7 _
  10. # O/ B$ L* B( E8 \
  11. // Mount the Back Button, so we will work with
    ! e7 p  e  F7 [- d
  12. // the actual component properties.. F$ P) E$ \8 i: C
  13. backButton.mount();* @1 G6 f) S1 Y
  14. ! P1 E) o0 n) B" d; O2 c4 Y
  15. app.mount('#root');
复制代码

BackButton.vue

  1. /**8 L8 g% A- \1 }5 }: _. B8 i% F
  2. * Component which controls the Back Button visibility.* Y2 q4 B. j" E$ ^! _# O/ x3 m) w
  3. */
    " Q9 C+ t6 f% ?* p' I
  4. <script setup lang="ts">
    4 g$ _$ m* N6 T8 n
  5. import { watchEffect, onMounted, onUnmounted } from 'vue';" a& ^9 T- ^- {/ ]% p
  6. import { backButton, useSignal } from '@telegram-apps/sdk-vue';
    ( D1 w% I: u3 R* f( u
  7. $ w$ G3 _4 |' N0 o6 m! ?' W
  8. const isVisible = useSignal(backButton.isVisible);8 K% ^6 x; ^( D3 K) w

  9. 0 z5 U' v3 X0 U( c
  10. watchEffect(() => {
      x% ]9 _& h5 v3 M  X4 C8 l
  11.   console.log('The button is', isVisible.value ? 'visible' : 'invisible');' I+ i9 a$ u# X6 X
  12. });
    . o* \7 i2 q, `. s* E" g
  13. , J' r7 c; E/ P' H( U
  14. onMounted(() => {
    1 y. O! a0 c! V/ ?
  15.   backButton.show();
    # v! N0 ], D9 u4 S& M
  16. });5 J: K8 ~9 n8 g6 V- r0 J
  17. ; |/ l0 P$ _9 y) W7 Z! F1 _9 ]) k& E
  18. onUnmounted(() => {  b! \9 l1 X% X
  19.   backButton.hide();
    : ^' o( e, ]/ R. E
  20. });
    * [6 O0 O' d( G# l
  21. </script>
    # |+ }- I# z) L

  22. 4 z' f2 j3 R2 I( y  c) t8 l: ?
  23. <template></template>
复制代码
HooksuseSignal

该辅助工具允许您在应用程序中使用我们的 signals。它 返回一个 Vue ref,每次我们的信号发生变化时,它都会更新。

  1. <script setup lang="ts">% \0 X' R) B8 W; F" r1 E- Z
  2. import { watchEffect, onMounted, onUnmounted } from 'vue';# l/ [: `5 `, U8 P( d
  3. import { backButton, useSignal } from '@telegram-apps/sdk-vue';! }& n! b0 W4 \, ]" d2 F

  4. / ]7 D. I$ z) x- o  z
  5. const isVisible = useSignal(backButton.isVisible);
    . C) `9 M/ f& t1 z, j9 m2 n

  6. 7 |" G# B, e- L  Y
  7. watchEffect(() => {, }- `9 [: B- f
  8.   console.log('The button is', isVisible.value ? 'visible' : 'invisible');
    8 [, {/ k, N% V4 k
  9. });
    $ q) z  |( x5 ]3 |: \1 P

  10. % U) w' A4 I, e# p, j
  11. onMounted(() => {
    * [. s* N, L* d
  12.   backButton.show();+ A# y& P1 i& I
  13. });
    ' @0 S0 v* K' r( M! t9 u

  14. / ^* O9 y$ }) t
  15. onUnmounted(() => {/ m, Y& H9 r3 M) D7 H: x
  16.   backButton.hide();
    . s7 b0 d) ]* h* J
  17. });
    8 P- T6 S( V* S1 l; }
  18. </script>
    0 s- ?; |6 L9 p; i

  19. - R0 \& R! p1 k; A/ U6 D/ o
  20. <template></template>
复制代码
useLaunchParams

返回迷你应用程序启动参数的函数。

  1. <script setup lang="ts">& ?; n( K$ g/ ?$ p! C  o4 i
  2. import { useLaunchParams } from '@telegram-apps/sdk-vue';. p0 y4 M  `0 e. X* u2 f+ W/ b8 L
  3. * i' T3 h% z% S6 |2 W8 M: V, S- K
  4. const lp = useLaunchParams();( L- D! C; B1 G- [
  5. </script>9 T. f. S8 t, u1 W& [7 ]
  6. & y+ |3 N5 D4 v/ ~# m8 ?! `
  7. <template>
    2 G* d  x) M* W5 w8 G- l
  8.   <div>Start param: {{ lp.startParam }}</div>+ ^$ l. t7 _8 ~4 Z; `. p+ j2 P& i
  9. </template>
复制代码
( f/ t, Z: p  l: L% C4 n; ~/ V
! _9 j' y* d. }; I& d# ^+ y# a! @
+ h; a, f; R! n& u' q
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则