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

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

回答

收藏

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

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

React.js 软件包提供开发人员在开发小型 应用程序时可能会用到的实用工具。. Z! x  ?; f7 P, i
- l3 y8 E& \1 ^5 A3 h

: m+ [0 f" P  _. m2 O6 L3 ]TIP

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


8 ^3 ~8 s3 ]0 v6 r( \9 o! C安装

在继续之前,假定您已经安装了 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';2 D9 H5 ]' v& F2 j
  2. import { init, backButton } from '@telegram-apps/sdk-react';, b' d: l0 j" [, l. X# {& @3 ^1 T( ~
  3. 1 [' e/ y; i% ^& |8 q1 L
  4. import { BackButton } from './BackButton.js';0 V; q$ k1 B3 o; r1 M9 Y

  5. $ Z6 I' g$ U/ z% j- F
  6. // Initialize the package.
    # ?  h1 C. a3 {* k
  7. init();( n. C/ ~5 F" i$ [
  8. 1 Q  ^: {4 {' q% V0 o4 \
  9. // Mount the Back Button, so we will work with
    8 S  _- a; s1 }' w$ Y
  10. // the actual component properties.
    0 _) `' u* m: h0 `* ~: ^
  11. backButton.mount();
    ( b/ m+ @5 _7 x5 ^- h
  12. ; ~. {7 ~, J! r$ N
  13. ReactDOM1 c1 b9 P2 G% i- F4 D
  14.   .createRoot(document.getElementById('root')!)
    ) M) c* _$ h1 ^0 ^* T! [8 p
  15.   .render(<BackButton/>);
复制代码

Backbutton.ts

  1. import { useEffect } from 'react';6 L& i! t" @1 `4 f5 C
  2. import { backButton, useSignal } from '@telegram-apps/sdk-react';& O% C% {. J9 o: Y
  3. 3 v4 l; r" u: S+ G# {5 V1 q! f
  4. /**/ r2 O9 M8 ~8 n* c4 G
  5. * Component which controls the Back Button visibility.+ q* Z# Q9 a6 q5 J4 M2 d0 q
  6. */4 a; Y, H9 N- m2 b) ~7 }2 U% l' @
  7. export function BackButton() {" r7 w; z: r3 R  e3 S* x1 M4 Z
  8.   const isVisible = useSignal(backButton.isVisible);, v& Y# v: g# A& i  N

  9. ! a* H) Y; E6 k5 m
  10.   useEffect(() => {
    4 Y/ W7 m% Y: ]8 ^  z
  11.     console.log('The button is', isVisible ? 'visible' : 'invisible');
    4 ?8 [& _7 g" P" V6 R
  12.   }, [isVisible]);, V: n6 f. z' f, P

  13. * u* W) J5 @! B: `% Y0 L
  14.   useEffect(() => {% _& y/ r) T' V+ |3 ^, x! x
  15.     backButton.show();6 x1 y( Q: b1 W, r2 ]
  16.     return () => {
    3 t4 j$ i7 I7 b2 @! l7 s3 W" s
  17.       backButton.hide();
    & Q$ [( F5 t3 o# {4 _" C( f6 Q$ M
  18.     };
    ) B5 c2 o) H$ }& h, B9 F: A; m
  19.   }, []);$ r6 ^5 |6 X! c) A+ S8 S8 u$ ~
  20.   A9 r! {8 e) n: D4 w6 f
  21.   return null;
    , s  n6 g7 B4 Q4 g
  22. }
复制代码
HooksuseSignal

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

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

  1. import { useEffect } from 'react';9 o5 W! J( w0 l( Q( D5 a
  2. import { backButton, useSignal } from '@telegram-apps/sdk-react';+ |% w. \+ s* a

  3. 9 V9 C/ b4 |; [. A
  4. function Component() {
    ' ?/ B# ], i* C) L
  5.   const isVisible = useSignal(backButton.isVisible);
    : h9 X1 v' T# B8 W

  6. , t' x+ {' \' G9 |2 i
  7.   useEffect(() => {
    : B* M' _! a, N9 R7 K: `
  8.     console.log('The button is', isVisible ? 'visible' : 'invisible');
    9 p( ~7 U& B3 n1 d6 M1 W4 [
  9.   }, [isVisible]);! O( T" _7 `* x/ i* J8 n* e0 {
  10. 0 p" p, \# d) K# G
  11.   useEffect(() => {5 F% U; p% k" ?- X. X. B' _0 h( ]
  12.     backButton.show();
    6 T5 Y% E' m, h! O% J; m
  13.     return () => {
    - P* N3 R: |0 [& X6 ?
  14.       backButton.hide();8 ]! H( S3 R: g& T  x
  15.     };
    ' y. P1 M" ~, V) {
  16.   }, []);! b2 ~, [3 x$ j, |$ I% S

  17. # _3 q7 L" ~. q# K) D+ ~; e
  18.   return null;
    ' h" ^2 p! `- O
  19. }
复制代码
useLaunchParams

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

  1. import { useLaunchParams } from '@telegram-apps/sdk-react';6 d' A( @; U5 Y! b  W
  2. 4 c* x/ ^+ c0 ?' D4 w6 N! q
  3. function Component() {1 u. R  C& S; N2 ~1 p: h
  4.   const lp = useLaunchParams();
    ' u! ^+ [; }5 j1 C% j
  5.   return <div>Start parameter: {lp.startParam}</div>;
    # Y5 s+ ?% }) @6 r/ V
  6. }
复制代码
" j, Y/ W, p2 m
9 ?# n8 {/ ], l  u" M! m) F& q

6 |4 k6 M/ U' I* H
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则