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

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

回答

收藏

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

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

Vue.js 软件包提供开发人员在开发迷你应用程序时可能会用到的实用工具。
* [$ ]7 l1 J7 ]# ~
9 N: o8 [5 i" u0 g

TIP

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


+ ?3 X+ `7 L2 i; p4 d! U7 i
* F1 u, p2 i+ R+ g3 a: U8 [安装

在继续之前,假定您已经安装了 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';9 o) Q: h& v; x7 s
  2. import { init, backButton } from '@telegram-apps/sdk-vue';5 }$ e8 _# o  w' Z# n: a2 e
  3. 6 b5 [0 t5 ~) Q* u1 D3 {5 f% n* T) y4 e
  4. import { BackButton } from './BackButton.vue';
    : ?/ }2 t& y- i9 O' W
  5. & U, v! H2 Z2 V# ~, f; W' {4 |  o
  6. // Initialize the package.6 B+ O4 O, P$ j8 Y
  7. init();9 O) y5 Y' e. b9 z5 |& K

  8. & ~& Q* x! ~3 |9 h( h
  9. const app = createApp(BackButton);  f$ N& u* ~1 [. j
  10. ! ^- R8 r5 |) V! j" W) V
  11. // Mount the Back Button, so we will work with
    ( b6 W9 w( Z# [2 p
  12. // the actual component properties.
    % S4 A) @# j- p/ ]7 m* f
  13. backButton.mount();/ }4 L( y0 W" L6 z" T3 T! L; W- D' ~: g

  14. . a* S6 |2 I  H, L. N# ~
  15. app.mount('#root');
复制代码

BackButton.vue

  1. /**! U. r1 u7 z. _: ]' I9 q
  2. * Component which controls the Back Button visibility.* Y1 h8 _8 l# q
  3. */4 n( f" T4 C4 Q
  4. <script setup lang="ts">. x. n: N9 i9 G: m6 f8 A; R# R
  5. import { watchEffect, onMounted, onUnmounted } from 'vue';
    / b$ X( w7 `/ h' x1 r7 x) J
  6. import { backButton, useSignal } from '@telegram-apps/sdk-vue';
    9 l. M+ e+ s; k6 o, T

  7. 2 A6 D+ t4 m4 h
  8. const isVisible = useSignal(backButton.isVisible);: I1 a% o6 _( Q! [+ y4 p0 Q

  9. 5 Y7 ^3 t6 Z6 D. Q  f3 F
  10. watchEffect(() => {  ^6 G$ e+ n! H% H4 @
  11.   console.log('The button is', isVisible.value ? 'visible' : 'invisible');  m* C: v& k, x0 `2 u& `
  12. });
    , I9 X; w; z7 K' ?7 V

  13. 3 s  N" O, y, W
  14. onMounted(() => {
      N- b; J0 q# ~. ?5 ]
  15.   backButton.show();/ ]+ P. n9 W; s! c: ?6 V+ Q
  16. });
    7 w2 M8 t2 }2 n0 ?. \
  17. 9 |$ r# i: C$ b* u4 \4 P" f0 X
  18. onUnmounted(() => {
    ) }& d+ g+ ^: F. G
  19.   backButton.hide();  m. ?  l. v4 k, z
  20. });
    ( V( }' n/ z* V6 g' |* ~1 n
  21. </script>
    8 ]3 k$ _- q& a) k2 H% k! e2 g
  22. * T2 P: B5 R3 ~. O% U
  23. <template></template>
复制代码
HooksuseSignal

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

  1. <script setup lang="ts">- F' ?+ _0 F7 D( Z1 Q
  2. import { watchEffect, onMounted, onUnmounted } from 'vue';
    , `' l7 d2 L- c
  3. import { backButton, useSignal } from '@telegram-apps/sdk-vue';0 H2 |% z$ F: B. b. Y7 L+ d+ K
  4. . Q( J$ L6 l$ _* G- N9 u
  5. const isVisible = useSignal(backButton.isVisible);
    # Y& w6 C% r% Z( O/ P  r+ m' z
  6. 6 h( Z/ b4 ~! B% Z# Y3 y7 u
  7. watchEffect(() => {
    5 H9 v/ K; B) S6 V( X! _
  8.   console.log('The button is', isVisible.value ? 'visible' : 'invisible');; s$ U7 p. P( E2 k( x- ?
  9. });6 O, u* u6 x6 b
  10. 7 p' d  ]$ x2 t1 b" q' ]
  11. onMounted(() => {
    ) i& g7 p+ ]7 L" \$ Q( J' O
  12.   backButton.show();
    ' A- u; k. h5 x( C
  13. });" \9 `4 w; D. U) U/ @

  14. 7 m1 N. h0 x1 P
  15. onUnmounted(() => {8 H! P0 E* T0 F' n, m1 W" k& B" y
  16.   backButton.hide();
    & L6 R: [2 M+ g1 N) }3 g; A. B7 t
  17. });' e, @# d6 g2 R7 w" e# q
  18. </script># y2 @: s2 @! ?8 B
  19. , K; V! n0 X' D+ ~2 B
  20. <template></template>
复制代码
useLaunchParams

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

  1. <script setup lang="ts">$ p, @7 B0 X7 \/ h
  2. import { useLaunchParams } from '@telegram-apps/sdk-vue';& X+ T. m) ]# h9 P- m( [  h3 K

  3. ! ~4 L; Y% k5 B' A2 ]1 S/ n2 D6 Y
  4. const lp = useLaunchParams();0 M) O$ p  |( v- N) G! j6 x
  5. </script>& C! p' y( _$ Z# z( M
  6. 8 s+ ?* T8 \2 B! ?- w5 t
  7. <template>8 Y2 I+ P2 j' O# s
  8.   <div>Start param: {{ lp.startParam }}</div>
    # p. R% L, l! I$ Q$ r5 Z9 u
  9. </template>
复制代码

" B4 Y/ O( ~1 f1 N/ p( W0 E: F, W+ T: U) i' p

" d$ I8 K4 X( b  b$ j
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则