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

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

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk-react @2.x

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

React.js 软件包提供开发人员在开发小型 应用程序时可能会用到的实用工具。
: D$ I+ f& w7 {4 G( f
$ X* ~! b/ Z1 t

0 _. J( ?1 j" b- g/ F8 N- E3 _TIP

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


( j% j: `1 N: W安装

在继续之前,假定您已经安装了 react 软件包,因为它是 对等软件包的依赖项。

pnpm :

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

npm :

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

yarn :

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

INFO

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

使用方法

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

index.tsx

  1. import ReactDOM from 'react-dom/client';8 s+ c! N& {+ k1 n% K' W0 j  B6 O
  2. import { init, backButton } from '@telegram-apps/sdk-react';! Z( j5 p, e! V! V% d0 Z

  3. # }3 }. N! a* j" a# r* i
  4. import { BackButton } from './BackButton.js';
    ; y' ^# q, m/ E( |% Z

  5. 5 }4 M! J# b9 m" G
  6. // Initialize the package.
    ! U; X, C% C! Z/ i9 A  W
  7. init();
    $ o; l" D( H  q/ Z( X5 J; c
  8. 9 A0 |* }3 q0 q4 R- b3 h/ h
  9. // Mount the Back Button, so we will work with
    ' g* g7 m1 M! {/ {1 P0 F
  10. // the actual component properties./ Y4 w; s1 V; \& c# G2 ]
  11. backButton.mount();
    4 H# h2 A0 l* h! F6 k" w

  12. / j2 T6 a* U* B
  13. ReactDOM
    ! z, ]4 {- ~2 Y
  14.   .createRoot(document.getElementById('root')!)
    ! i: v/ z7 |" T1 V) G5 h! e3 c2 b" C
  15.   .render(<BackButton/>);
复制代码

Backbutton.ts

  1. import { useEffect } from 'react';
    8 Z2 w  R, s* ?" f: a3 d' e
  2. import { backButton, useSignal } from '@telegram-apps/sdk-react';( R1 c& l# g/ ^$ l4 Z$ e

  3. ! x7 R$ u2 y' h. A4 }: p
  4. /**  V6 V3 B3 V% D
  5. * Component which controls the Back Button visibility.+ F7 D! g2 `( \" j
  6. */
    * I! \+ Y7 ~  e9 [1 S9 U7 s
  7. export function BackButton() {
    2 t9 e1 ~' `) U4 [! }/ B1 R9 Y4 e0 a
  8.   const isVisible = useSignal(backButton.isVisible);
    6 }/ ]) d" w- T) \" R6 O

  9. 3 C5 m' F; j" D' Q' D7 y; Z
  10.   useEffect(() => {7 }: F) j) k1 l
  11.     console.log('The button is', isVisible ? 'visible' : 'invisible');2 f6 G- ?3 D  k& V. Z! r
  12.   }, [isVisible]);& A9 U1 W7 W" z8 X( Y, h! ]
  13. ) x; T1 \+ I4 t
  14.   useEffect(() => {& @4 z1 s& R3 L0 |2 P' r8 B
  15.     backButton.show();
    - n2 Q$ Y, f8 e
  16.     return () => {+ l1 L: j# p5 s- r$ j. b
  17.       backButton.hide();
    - _: K& [5 T& z) I
  18.     };5 ^) G; ]; u* _+ F( O1 g
  19.   }, []);
    ' R0 Q6 r5 k( w2 u( l

  20. 8 U* E* a/ U) @2 q0 q* K6 t
  21.   return null;
    5 k, R5 Z% ]& {% r& u8 b
  22. }
复制代码
HooksuseSignal

该辅助工具允许开发人员在 应用程序中使用我们的 signals

它返回基础值,并在信号值发生变化时进行更新。

  1. import { useEffect } from 'react';
    . b  d/ p2 U, i* I1 w# Z( A
  2. import { backButton, useSignal } from '@telegram-apps/sdk-react';
    1 }$ X! @2 b/ w
  3. / V' m7 P( s5 \9 o: P, e
  4. function Component() {3 i5 z6 ^, d- V/ ?9 a6 R
  5.   const isVisible = useSignal(backButton.isVisible);
    . Y9 p9 v' z/ l
  6. 2 I* e3 V) }, H& K; M2 A+ B. F& H
  7.   useEffect(() => {
    " S! ^! G, [6 _2 u9 ^. D! V' p
  8.     console.log('The button is', isVisible ? 'visible' : 'invisible');
    " g8 k2 ^& ^- V! f
  9.   }, [isVisible]);
    . a. _8 B2 |4 A6 _% V" s7 y
  10. $ k' a" b: ^& f
  11.   useEffect(() => {
    ( k) C/ {( y8 x: b7 f8 n! _
  12.     backButton.show();
    , c4 m6 _" Z; w& x$ H0 K& H0 u
  13.     return () => {
    & d" f- v( K$ Z- p" F  O& s
  14.       backButton.hide();) X( t% J; `9 b" s$ Y
  15.     };+ d5 R/ E) v/ c
  16.   }, []);; Z/ R/ o! t( S) f7 v) ^4 u, C

  17. 8 Q# Z8 V+ V' L& A+ Y/ o0 D
  18.   return null;) v+ L$ T4 ^+ b9 L: S# q
  19. }
复制代码
useLaunchParams

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

  1. import { useLaunchParams } from '@telegram-apps/sdk-react';
    8 D* q6 Y: d) E" t% z

  2. 0 n7 m; ^2 ]: J
  3. function Component() {! h. X! M" f% [: E( K
  4.   const lp = useLaunchParams();. {. I7 X. `& g) a( P
  5.   return <div>Start parameter: {lp.startParam}</div>;
    , d+ G& |4 u' @( a
  6. }
复制代码
0 z+ d! D0 [. H9 D/ K6 ]1 o
, P) s9 X- b" Z! |
/ ~: S- H/ r9 e- e# X
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则