製品アップデート情報
Tencent Cloudオーディオビデオ端末SDKの再生アップグレードおよび承認チェック追加に関するお知らせ
TRTCアプリケーションのサブスクリプションパッケージサービスのリリースに関する説明について

npm install tuikit-atomicx-react @tencentcloud/uikit-base-component-react --savenpm install sass --save-dev
pnpm add tuikit-atomicx-react @tencentcloud/uikit-base-component-reactpnpm add sass --dev
yarn add tuikit-atomicx-react @tencentcloud/uikit-base-component-reactyarn add sass --dev
LiveListView.tsx and LiveListView.module.scss files in your project. Copy the code below to integrate the live list page.import React, { useEffect, useCallback } from 'react';import { useNavigate, useSearchParams } from 'react-router-dom';import { LiveList, useLoginState } from 'tuikit-atomicx-react';import type { LiveInfo } from 'tuikit-atomicx-react';import { UIKitProvider, MessageBox } from '@tencentcloud/uikit-base-component-react';import styles from './LiveListView.module.scss';const LiveListView: React.FC = () => {const navigate = useNavigate();const [searchParams] = useSearchParams();const { loginUserInfo, login, setSelfInfo } = useLoginState();const handleLiveRoomClick = (liveInfo: LiveInfo) => {if (loginUserInfo?.userId === liveInfo.liveOwner?.userId) {MessageBox.alert({title: 'Warning',content: 'Cannot view your own live room',});return;}if (liveInfo?.liveId) {// You can add business logic here to navigate to the viewing page// // Example of navigating from [Live List Page] to [Audience Viewing Page]// const newParams = new URLSearchParams(searchParams);// newParams.set('liveId', liveInfo.liveId);// // Put the live room ID in URL parameters, so the audience viewing page can enter the corresponding live room based on URL parameters// navigate(`/live-player?${newParams.toString()}`);}};const initLogin = useCallback(async () => {try {await login({SDKAppID: 0, // Please replace with your SDKAppID (obtained when activating service)userID: '', // Please replace with your user IDuserSig: '', // Please replace with your user signature (see [Step 1: Environment Configuration and Service Activation] document for detailed instructions)});await setSelfInfo({userName: '', // User nickname, displayed in member list and chat messages. If not set, user ID will be displayedavatarUrl: '', // User avatar, must be a complete URL image address, e.g.: https://your.domain.com/avatar-default.png});} catch (error) {console.error('Login failed:', error);}}, [login, setSelfInfo]);useEffect(() => {async function init() {await initLogin();}if (!loginUserInfo?.userId) {init();} else {console.log('[LiveList]User already logged in:', loginUserInfo.userId);}}, [initLogin, loginUserInfo?.userId]);return (<UIKitProvider theme="dark"><div className={styles.liveList}>{/* Live list component: set to display 5 columns, register live room click event handler */}<LiveList columnCount={5} onLiveRoomClick={handleLiveRoomClick} /></div></UIKitProvider>);};export default LiveListView;
.liveList {display: flex;flex-direction: column;width: 100%;height: 100%;background-color: var(--bg-color-topbar);color: var(--text-color-primary);overflow: auto;box-sizing: border-box;}
src/router/index.tsx in your project, then import and use it in your main file (e.g., main.tsx or App.tsx). See the GitHub Code Example for reference.// src/router/index.tsximport { createHashRouter } from 'react-router-dom';import { LiveListView } from '../views/LiveList';import { LivePlayerView } from '../views/LivePlayer';// Route protection componentconst ProtectedRoute = ({ children }: { children: React.ReactNode; }) => {return (<>{children}</>);};const routes = [// Live List{path: '/live-list',element: <LiveListView />,},// // If you need to implement clicking the live room cover in the live list to navigate to the live viewing page, you need to configure the viewing page route// // For viewing page integration, please refer to [Audience Viewing -> Audience Viewing (Web React)]// {// path: '/live-player',// element: <LivePlayerView />,// }];export const router = createHashRouter(routes.map(route => ({...route,element: <ProtectedRoute>{route.element}</ProtectedRoute>,})));
App.tsx file, use the above route component src/router/index.tsx.// src/App.tsximport { RouterProvider } from 'react-router-dom'import { router } from './router'import './App.css'function App() {return (<RouterProvider router={router} />)}export default App
npm run dev
UIKitProvider Parameter | Options | Default Value |
theme | "light" | "dark" | "light" |
language | "zh-CN" | "en-US" | - |
import { RouterProvider } from 'react-router-dom'import { UIKitProvider } from '@tencentcloud/uikit-base-component-react'import { router } from './router'import './App.css'function App() {return (<UIKitProvider theme="dark" language='zh-CN'><RouterProvider router={router} /></UIKitProvider>);}export default App
// ... other imports omittedimport { UIKitProvider } from '@tencentcloud/uikit-base-component-react'const LiveListView: React.FC = () => {// ... other code omittedreturn (<UIKitProvider theme="dark"><div className={styles.liveList}><LiveList columnCount={5} onLiveRoomClick={handleLiveRoomClick} /></div></UIKitProvider>);};export default LiveListView;
const initLogin = useCallback(async () => {try {await login({SDKAppID: 0, // SDKAppID obtained when activating serviceuserID: '', // UserID user IDuserSig: '', // userSig user signature, see [Preparation] document for detailed instructions});await setSelfInfo({userName: '', // User nickname, displayed in member list and chat messages. If not set, user ID will be displayedavatarUrl: '', // User avatar, must be a complete URL image address, e.g.: https://your.domain.com/avatar-default.png});} catch (error) {console.error('Login failed:', error);}}, [login, setSelfInfo]);
Feature | Description | Integration Guide |
Audience Viewing | Enable audiences to watch live streams, with features like co-hosting, room information display, online audience list, and live chat. |
피드백