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 : - pnpm i @telegram-apps/sdk-react
复制代码npm : - npm i @telegram-apps/sdk-react
复制代码yarn : - yarn add @telegram-apps/sdk-react
复制代码INFO 此软件包完全重新导出 @telegram-apps/sdk 软件包,因此 您无需单独安装。 使用方法下面是该软件包的一个简单使用示例: index.tsx - import ReactDOM from 'react-dom/client';8 s+ c! N& {+ k1 n% K' W0 j B6 O
- import { init, backButton } from '@telegram-apps/sdk-react';! Z( j5 p, e! V! V% d0 Z
# }3 }. N! a* j" a# r* i- import { BackButton } from './BackButton.js';
; y' ^# q, m/ E( |% Z
5 }4 M! J# b9 m" G- // Initialize the package.
! U; X, C% C! Z/ i9 A W - init();
$ o; l" D( H q/ Z( X5 J; c - 9 A0 |* }3 q0 q4 R- b3 h/ h
- // Mount the Back Button, so we will work with
' g* g7 m1 M! {/ {1 P0 F - // the actual component properties./ Y4 w; s1 V; \& c# G2 ]
- backButton.mount();
4 H# h2 A0 l* h! F6 k" w
/ j2 T6 a* U* B- ReactDOM
! z, ]4 {- ~2 Y - .createRoot(document.getElementById('root')!)
! i: v/ z7 |" T1 V) G5 h! e3 c2 b" C - .render(<BackButton/>);
复制代码Backbutton.ts - import { useEffect } from 'react';
8 Z2 w R, s* ?" f: a3 d' e - import { backButton, useSignal } from '@telegram-apps/sdk-react';( R1 c& l# g/ ^$ l4 Z$ e
! x7 R$ u2 y' h. A4 }: p- /** V6 V3 B3 V% D
- * Component which controls the Back Button visibility.+ F7 D! g2 `( \" j
- */
* I! \+ Y7 ~ e9 [1 S9 U7 s - export function BackButton() {
2 t9 e1 ~' `) U4 [! }/ B1 R9 Y4 e0 a - const isVisible = useSignal(backButton.isVisible);
6 }/ ]) d" w- T) \" R6 O
3 C5 m' F; j" D' Q' D7 y; Z- useEffect(() => {7 }: F) j) k1 l
- console.log('The button is', isVisible ? 'visible' : 'invisible');2 f6 G- ?3 D k& V. Z! r
- }, [isVisible]);& A9 U1 W7 W" z8 X( Y, h! ]
- ) x; T1 \+ I4 t
- useEffect(() => {& @4 z1 s& R3 L0 |2 P' r8 B
- backButton.show();
- n2 Q$ Y, f8 e - return () => {+ l1 L: j# p5 s- r$ j. b
- backButton.hide();
- _: K& [5 T& z) I - };5 ^) G; ]; u* _+ F( O1 g
- }, []);
' R0 Q6 r5 k( w2 u( l
8 U* E* a/ U) @2 q0 q* K6 t- return null;
5 k, R5 Z% ]& {% r& u8 b - }
复制代码 HooksuseSignal该辅助工具允许开发人员在 应用程序中使用我们的 signals。 它返回基础值,并在信号值发生变化时进行更新。 - import { useEffect } from 'react';
. b d/ p2 U, i* I1 w# Z( A - import { backButton, useSignal } from '@telegram-apps/sdk-react';
1 }$ X! @2 b/ w - / V' m7 P( s5 \9 o: P, e
- function Component() {3 i5 z6 ^, d- V/ ?9 a6 R
- const isVisible = useSignal(backButton.isVisible);
. Y9 p9 v' z/ l - 2 I* e3 V) }, H& K; M2 A+ B. F& H
- useEffect(() => {
" S! ^! G, [6 _2 u9 ^. D! V' p - console.log('The button is', isVisible ? 'visible' : 'invisible');
" g8 k2 ^& ^- V! f - }, [isVisible]);
. a. _8 B2 |4 A6 _% V" s7 y - $ k' a" b: ^& f
- useEffect(() => {
( k) C/ {( y8 x: b7 f8 n! _ - backButton.show();
, c4 m6 _" Z; w& x$ H0 K& H0 u - return () => {
& d" f- v( K$ Z- p" F O& s - backButton.hide();) X( t% J; `9 b" s$ Y
- };+ d5 R/ E) v/ c
- }, []);; Z/ R/ o! t( S) f7 v) ^4 u, C
8 Q# Z8 V+ V' L& A+ Y/ o0 D- return null;) v+ L$ T4 ^+ b9 L: S# q
- }
复制代码 useLaunchParams返回迷你应用程序启动参数的函数。 - import { useLaunchParams } from '@telegram-apps/sdk-react';
8 D* q6 Y: d) E" t% z
0 n7 m; ^2 ]: J- function Component() {! h. X! M" f% [: E( K
- const lp = useLaunchParams();. {. I7 X. `& g) a( P
- return <div>Start parameter: {lp.startParam}</div>;
, d+ G& |4 u' @( a - }
复制代码 0 z+ d! D0 [. H9 D/ K6 ]1 o
, P) s9 X- b" Z! |
/ ~: S- H/ r9 e- e# X
|