mirror of
https://git.unlock-music.dev/um/um-react.git
synced 2024-11-24 01:22:17 +00:00
Compare commits
No commits in common. "87d2d711932a9fb0fbc573070947e3e8c4b78e7a" and "afc65fd5d0893f69ec734d68228a18f44687b90b" have entirely different histories.
87d2d71193
...
afc65fd5d0
@ -88,6 +88,5 @@
|
|||||||
"rollup-plugin-terser": "npm:@rollup/plugin-terser@0.4.3",
|
"rollup-plugin-terser": "npm:@rollup/plugin-terser@0.4.3",
|
||||||
"sourcemap-codec": "npm:@jridgewell/sourcemap-codec@1.4.15"
|
"sourcemap-codec": "npm:@jridgewell/sourcemap-codec@1.4.15"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"packageManager": "pnpm@9.12.1+sha512.e5a7e52a4183a02d5931057f7a0dbff9d5e9ce3161e33fa68ae392125b79282a8a8a470a51dfc8a0ed86221442eb2fb57019b0990ed24fab519bf0e1bc5ccfc4"
|
|
||||||
}
|
}
|
||||||
|
26
src/components/HelpText/Header3.tsx
Normal file
26
src/components/HelpText/Header3.tsx
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import { Heading } from '@chakra-ui/react';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export interface Header3Props {
|
||||||
|
children: React.ReactNode;
|
||||||
|
id?: string;
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Header3({ children, className, id }: Header3Props) {
|
||||||
|
return (
|
||||||
|
<Heading
|
||||||
|
as="h3"
|
||||||
|
id={id}
|
||||||
|
className={className}
|
||||||
|
pt={3}
|
||||||
|
pb={1}
|
||||||
|
borderBottom={'1px solid'}
|
||||||
|
borderColor="gray.300"
|
||||||
|
color="gray.800"
|
||||||
|
size="lg"
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</Heading>
|
||||||
|
);
|
||||||
|
}
|
16
src/components/HelpText/Header4.tsx
Normal file
16
src/components/HelpText/Header4.tsx
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Heading } from '@chakra-ui/react';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export interface Header4Props {
|
||||||
|
children: React.ReactNode;
|
||||||
|
id?: string;
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Header4({ children, className, id }: Header4Props) {
|
||||||
|
return (
|
||||||
|
<Heading as="h4" id={id} className={className} pt={3} pb={1} color="gray.700" size="md">
|
||||||
|
{children}
|
||||||
|
</Heading>
|
||||||
|
);
|
||||||
|
}
|
@ -1,42 +0,0 @@
|
|||||||
import { Heading } from '@chakra-ui/react';
|
|
||||||
import React from 'react';
|
|
||||||
|
|
||||||
export interface HeaderProps {
|
|
||||||
children: React.ReactNode;
|
|
||||||
id?: string;
|
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Header3({ children, className, id }: HeaderProps) {
|
|
||||||
return (
|
|
||||||
<Heading
|
|
||||||
as="h3"
|
|
||||||
id={id}
|
|
||||||
className={className}
|
|
||||||
pt={3}
|
|
||||||
pb={1}
|
|
||||||
borderBottom={'1px solid'}
|
|
||||||
borderColor="gray.300"
|
|
||||||
color="gray.800"
|
|
||||||
size="lg"
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</Heading>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Header4({ children, className, id }: HeaderProps) {
|
|
||||||
return (
|
|
||||||
<Heading as="h4" id={id} className={className} pt={3} pb={1} color="gray.700" size="md">
|
|
||||||
{children}
|
|
||||||
</Heading>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Header5({ children, className, id }: HeaderProps) {
|
|
||||||
return (
|
|
||||||
<Heading as="h5" id={id} className={className} pt={3} pb={1} color="gray.700" size="sm">
|
|
||||||
{children}
|
|
||||||
</Heading>
|
|
||||||
);
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
import { Alert, AlertIcon, Container, Flex, List, ListItem, Text } from '@chakra-ui/react';
|
import { Alert, AlertIcon, Container, Flex, List, ListItem, Text, chakra } from '@chakra-ui/react';
|
||||||
import { Header4 } from '~/components/HelpText/Headers';
|
import { Header4 } from '~/components/HelpText/Header4';
|
||||||
import { VQuote } from '~/components/HelpText/VQuote';
|
import { VQuote } from '~/components/HelpText/VQuote';
|
||||||
import { SegmentTryOfficialPlayer } from './SegmentTryOfficialPlayer';
|
import { SegmentTryOfficialPlayer } from './SegmentTryOfficialPlayer';
|
||||||
import { HiWord } from '~/components/HelpText/HiWord';
|
import { HiWord } from '~/components/HelpText/HiWord';
|
||||||
@ -15,6 +15,9 @@ export function KuwoFAQ() {
|
|||||||
<SegmentTryOfficialPlayer />
|
<SegmentTryOfficialPlayer />
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
|
<Text>
|
||||||
|
<chakra.strong>2、检查您的平台</chakra.strong>
|
||||||
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
日前,仅<HiWord>手机客户端</HiWord>下载的
|
日前,仅<HiWord>手机客户端</HiWord>下载的
|
||||||
<VQuote>
|
<VQuote>
|
||||||
@ -35,10 +38,10 @@ export function KuwoFAQ() {
|
|||||||
<Flex flexDir="column">
|
<Flex flexDir="column">
|
||||||
<Text>安卓用户提取密钥需要 root 权限,或注入文件提供器。</Text>
|
<Text>安卓用户提取密钥需要 root 权限,或注入文件提供器。</Text>
|
||||||
<Text>
|
<Text>
|
||||||
<strong>注意</strong>:已知部分第三方修改版会破坏密钥写入功能,导致无法提取密钥。
|
<strong>注意</strong>:已知部分第三方修改版会破坏密钥写入功能,导致无法正常导入密钥。
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
<strong>注意</strong>:项目组不提倡使用、也不提供第三方修改版。使用前请自行评估风险。
|
<strong>注意</strong>:项目组不提倡使用第三方修改版应用亦不会提供,使用前请自行评估风险。
|
||||||
</Text>
|
</Text>
|
||||||
</Flex>
|
</Flex>
|
||||||
</Alert>
|
</Alert>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Alert, AlertIcon, Code, Container, Flex, Img, ListItem, Text, UnorderedList } from '@chakra-ui/react';
|
import { Alert, AlertIcon, Code, Container, Flex, Img, ListItem, Text, UnorderedList } from '@chakra-ui/react';
|
||||||
import { ExtLink } from '~/components/ExtLink';
|
import { ExtLink } from '~/components/ExtLink';
|
||||||
import { Header4 } from '~/components/HelpText/Headers';
|
import { Header4 } from '~/components/HelpText/Header4';
|
||||||
import { VQuote } from '~/components/HelpText/VQuote';
|
import { VQuote } from '~/components/HelpText/VQuote';
|
||||||
import { ProjectIssue } from '~/components/ProjectIssue';
|
import { ProjectIssue } from '~/components/ProjectIssue';
|
||||||
import LdPlayerSettingsScreen from './assets/ld_settings_misc.webp';
|
import LdPlayerSettingsScreen from './assets/ld_settings_misc.webp';
|
||||||
@ -63,7 +63,7 @@ export function OtherFAQ() {
|
|||||||
<AlertIcon />
|
<AlertIcon />
|
||||||
<Flex flexDir="column">
|
<Flex flexDir="column">
|
||||||
<Text>
|
<Text>
|
||||||
<strong>注意</strong>:根据应用的风控策略,使用模拟器登录的账号<strong>有可能会导致账号被封锁</strong>
|
<strong>注意</strong>:根据应用厂商的风控策略,使用模拟器登录的账号<strong>有可能会被封锁</strong>
|
||||||
{';使用前请自行评估风险。'}
|
{';使用前请自行评估风险。'}
|
||||||
</Text>
|
</Text>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
@ -1,159 +1,63 @@
|
|||||||
import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box } from '@chakra-ui/react';
|
import { Alert, AlertIcon, Container, Flex, List, ListItem, Text, UnorderedList, chakra } from '@chakra-ui/react';
|
||||||
import { Alert, AlertIcon, Container, Flex, ListItem, Text, UnorderedList } from '@chakra-ui/react';
|
import { Header4 } from '~/components/HelpText/Header4';
|
||||||
import { Header4 } from '~/components/HelpText/Headers';
|
|
||||||
import { SegmentTryOfficialPlayer } from './SegmentTryOfficialPlayer';
|
import { SegmentTryOfficialPlayer } from './SegmentTryOfficialPlayer';
|
||||||
|
import { QMCv2QQMusicAllInstructions } from '~/features/settings/panels/QMCv2/QMCv2QQMusicAllInstructions';
|
||||||
import { SegmentKeyImportInstructions } from './SegmentKeyImportInstructions';
|
import { SegmentKeyImportInstructions } from './SegmentKeyImportInstructions';
|
||||||
import { ExtLink } from '~/components/ExtLink';
|
import { ExtLink } from '~/components/ExtLink';
|
||||||
import { AndroidADBPullInstruction } from '~/components/AndroidADBPullInstruction/AndroidADBPullInstruction';
|
|
||||||
import { InstructionsIOS } from '~/features/settings/panels/QMCv2/InstructionsIOS';
|
|
||||||
import { InstructionsMac } from '~/features/settings/panels/QMCv2/InstructionsMac';
|
|
||||||
|
|
||||||
export function QQMusicFAQ() {
|
export function QQMusicFAQ() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header4>解锁失败</Header4>
|
<Header4>解锁失败</Header4>
|
||||||
<SegmentTryOfficialPlayer />
|
<List spacing={2}>
|
||||||
<Text>重复下载同一首的歌曲不重复扣下载配额,但是同一首歌的两个版本会重复扣下载配额,请仔细分辨。</Text>
|
<ListItem>
|
||||||
<Text>
|
<SegmentTryOfficialPlayer />
|
||||||
部分平台获取的加密文件未包含密钥。选择你<strong>下载文件时</strong>使用的客户端来查看说明。
|
</ListItem>
|
||||||
</Text>
|
<ListItem>
|
||||||
<Accordion allowToggle my={2}>
|
<Text>
|
||||||
<AccordionItem>
|
<chakra.strong>2、检查您的平台</chakra.strong>
|
||||||
<h2>
|
</Text>
|
||||||
<AccordionButton>
|
<Text>
|
||||||
<Box as="span" flex="1" textAlign="left">
|
日前,仅 Windows 客户端 19.43 或更低版本下载的歌曲文件无需密钥,其余平台的官方正式版本均需要提取密钥。
|
||||||
Windows
|
你可以通过下方的链接获取 QQ 音乐 Windows 客户端 v19.43 的安装程序:
|
||||||
</Box>
|
</Text>
|
||||||
<AccordionIcon />
|
<UnorderedList pl={3}>
|
||||||
</AccordionButton>
|
<ListItem>
|
||||||
</h2>
|
<Text>
|
||||||
<AccordionPanel pb={4}>
|
<ExtLink href="https://dldir1v6.qq.com/music/clntupate/QQMusic_Setup_1943.exe">
|
||||||
<Text>
|
<code>qq.com</code> 官方下载地址(推荐)
|
||||||
目前 Windows 客户端 19.51 或更低版本下载的歌曲文件无需密钥,其余平台的官方正式版本均需要提取密钥。
|
</ExtLink>
|
||||||
</Text>
|
</Text>
|
||||||
<Text>你可以通过下方的链接获取 QQ 音乐 Windows 客户端 v19.51 的安装程序:</Text>
|
</ListItem>
|
||||||
<UnorderedList pl={3}>
|
<ListItem>
|
||||||
<ListItem>
|
<Text>
|
||||||
<Text>
|
<ExtLink href="https://web.archive.org/web/2023/https://dldir1v6.qq.com/music/clntupate/QQMusic_Setup_1943.exe">
|
||||||
<ExtLink href="https://dldir1v6.qq.com/music/clntupate/QQMusic_Setup_1951.exe">
|
<code>Archive.org</code> 存档
|
||||||
<code>qq.com</code> 官方下载地址(推荐)
|
</ExtLink>
|
||||||
</ExtLink>
|
</Text>
|
||||||
</Text>
|
</ListItem>
|
||||||
</ListItem>
|
</UnorderedList>
|
||||||
<ListItem>
|
|
||||||
<Text>
|
|
||||||
<ExtLink href="https://web.archive.org/web/2023/https://dldir1v6.qq.com/music/clntupate/QQMusic_Setup_1951.exe">
|
|
||||||
<code>Archive.org</code> 存档
|
|
||||||
</ExtLink>
|
|
||||||
</Text>
|
|
||||||
</ListItem>
|
|
||||||
</UnorderedList>
|
|
||||||
</AccordionPanel>
|
|
||||||
</AccordionItem>
|
|
||||||
|
|
||||||
<AccordionItem>
|
<Container p={2}>
|
||||||
<h2>
|
<Alert status="warning" borderRadius={5}>
|
||||||
<AccordionButton>
|
<AlertIcon />
|
||||||
<Box as="span" flex="1" textAlign="left">
|
<Flex flexDir="column">
|
||||||
Mac
|
<Text>iOS 用户提取歌曲困难,建议换用电脑操作;</Text>
|
||||||
</Box>
|
<Text>安卓用户提取密钥需要root,也建议用电脑操作。</Text>
|
||||||
<AccordionIcon />
|
</Flex>
|
||||||
</AccordionButton>
|
</Alert>
|
||||||
</h2>
|
</Container>
|
||||||
<AccordionPanel pb={4}>
|
|
||||||
<Container p={2}>
|
|
||||||
<Alert status="warning" borderRadius={5}>
|
|
||||||
<AlertIcon />
|
|
||||||
<Flex flexDir="column">
|
|
||||||
<Text>Mac 需要降级到 8.8.0 或以下版本。</Text>
|
|
||||||
<Text>
|
|
||||||
<ExtLink href="https://web.archive.org/web/20230903/https://dldir1.qq.com/music/clntupate/mac/QQMusicMac_Mgr.dmg">
|
|
||||||
<code>Archive.org</code> 存档
|
|
||||||
</ExtLink>
|
|
||||||
</Text>
|
|
||||||
</Flex>
|
|
||||||
</Alert>
|
|
||||||
</Container>
|
|
||||||
|
|
||||||
<SegmentKeyImportInstructions
|
<Container p={2} pt={0}>
|
||||||
tab="QMCv2 密钥"
|
<Alert status="info" borderRadius={5}>
|
||||||
keyInstructionText="查看密钥提取说明:"
|
<AlertIcon />
|
||||||
clientInstructions={
|
重复下载同一首的歌曲不重复扣下载配额,但是同一首歌的两个版本会重复扣下载配额,请仔细分辨。
|
||||||
<Box p={2}>
|
</Alert>
|
||||||
<InstructionsMac />
|
</Container>
|
||||||
</Box>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</AccordionPanel>
|
|
||||||
</AccordionItem>
|
|
||||||
|
|
||||||
<AccordionItem>
|
<SegmentKeyImportInstructions tab="QMCv2 密钥" clientInstructions={<QMCv2QQMusicAllInstructions />} />
|
||||||
<h2>
|
</ListItem>
|
||||||
<AccordionButton>
|
</List>
|
||||||
<Box as="span" flex="1" textAlign="left">
|
|
||||||
安卓 (Android)
|
|
||||||
</Box>
|
|
||||||
<AccordionIcon />
|
|
||||||
</AccordionButton>
|
|
||||||
</h2>
|
|
||||||
<AccordionPanel pb={4}>
|
|
||||||
<Container p={2}>
|
|
||||||
<Alert status="warning" borderRadius={5}>
|
|
||||||
<AlertIcon />
|
|
||||||
<Flex flexDir="column">
|
|
||||||
<Text>安卓提取密钥需要 root 特权,建议用电脑操作。</Text>
|
|
||||||
</Flex>
|
|
||||||
</Alert>
|
|
||||||
</Container>
|
|
||||||
|
|
||||||
<Text>QQ 音乐官方版本需要提取密钥才能解密。</Text>
|
|
||||||
<Text>
|
|
||||||
你也可以尝试使用【QQ 音乐简洁版】或 OEM 定制版(如小米、魅族定制版)。简洁、定制版本目前不需要提取密钥。
|
|
||||||
</Text>
|
|
||||||
|
|
||||||
<SegmentKeyImportInstructions
|
|
||||||
tab="QMCv2 密钥"
|
|
||||||
keyInstructionText="查看密钥提取说明:"
|
|
||||||
clientInstructions={
|
|
||||||
<Box p={2}>
|
|
||||||
<AndroidADBPullInstruction dir="/data/data/com.tencent.qqmusic/databases" file="player_process_db" />
|
|
||||||
</Box>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</AccordionPanel>
|
|
||||||
</AccordionItem>
|
|
||||||
|
|
||||||
<AccordionItem>
|
|
||||||
<h2>
|
|
||||||
<AccordionButton>
|
|
||||||
<Box as="span" flex="1" textAlign="left">
|
|
||||||
iOS (iPhone, iPad)
|
|
||||||
</Box>
|
|
||||||
<AccordionIcon />
|
|
||||||
</AccordionButton>
|
|
||||||
</h2>
|
|
||||||
<AccordionPanel pb={4}>
|
|
||||||
<Container p={2}>
|
|
||||||
<Alert status="warning" borderRadius={5}>
|
|
||||||
<AlertIcon />
|
|
||||||
<Flex flexDir="column">
|
|
||||||
<Text>iOS 用户提取歌曲困难,建议换用电脑操作;</Text>
|
|
||||||
</Flex>
|
|
||||||
</Alert>
|
|
||||||
</Container>
|
|
||||||
|
|
||||||
<SegmentKeyImportInstructions
|
|
||||||
tab="QMCv2 密钥"
|
|
||||||
keyInstructionText="查看密钥提取说明:"
|
|
||||||
clientInstructions={
|
|
||||||
<Box p={2}>
|
|
||||||
<InstructionsIOS />
|
|
||||||
</Box>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</AccordionPanel>
|
|
||||||
</AccordionItem>
|
|
||||||
</Accordion>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,9 @@ import { MdFileUpload } from 'react-icons/md';
|
|||||||
export interface SegmentKeyImportInstructionsProps {
|
export interface SegmentKeyImportInstructionsProps {
|
||||||
clientInstructions: React.ReactNode;
|
clientInstructions: React.ReactNode;
|
||||||
tab: string;
|
tab: string;
|
||||||
keyInstructionText?: React.ReactNode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SegmentKeyImportInstructions({
|
export function SegmentKeyImportInstructions({ clientInstructions, tab }: SegmentKeyImportInstructionsProps) {
|
||||||
clientInstructions,
|
|
||||||
tab,
|
|
||||||
keyInstructionText = '选择你的客户端平台来查看密钥提取说明:',
|
|
||||||
}: SegmentKeyImportInstructionsProps) {
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Text>导入密钥可以参考下面的步骤:</Text>
|
<Text>导入密钥可以参考下面的步骤:</Text>
|
||||||
@ -38,7 +33,7 @@ export function SegmentKeyImportInstructions({
|
|||||||
</Flex>
|
</Flex>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Text>{keyInstructionText}</Text>
|
<Text>选择你的客户端平台来查看密钥提取说明:</Text>
|
||||||
<Tabs display="flex" flexDir="column" border="1px solid" borderColor="gray.300" borderRadius={5}>
|
<Tabs display="flex" flexDir="column" border="1px solid" borderColor="gray.300" borderRadius={5}>
|
||||||
{clientInstructions}
|
{clientInstructions}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { Alert, AlertIcon, Container } from '@chakra-ui/react';
|
import { Text, chakra } from '@chakra-ui/react';
|
||||||
|
|
||||||
export function SegmentTryOfficialPlayer() {
|
export function SegmentTryOfficialPlayer() {
|
||||||
return (
|
return (
|
||||||
<Container p={2} my={2} pt={0}>
|
<>
|
||||||
<Alert status="info" borderRadius={5}>
|
<Text>
|
||||||
<AlertIcon />
|
<chakra.strong>1、请检查您的文件</chakra.strong>
|
||||||
尝试用下载音乐的设备播放一次看看,如果官方客户端都无法播放,那解锁肯定会失败哦。
|
</Text>
|
||||||
</Alert>
|
<Text>尝试用下载音乐的设备播放一次看看,如果官方客户端都无法播放,那解锁肯定会失败哦。</Text>
|
||||||
</Container>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@ import { Text } from '@chakra-ui/react';
|
|||||||
export function InstructionsPC() {
|
export function InstructionsPC() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Text>使用 Windows 19.51 或更低版本下载的歌曲文件无需密钥。</Text>
|
<Text>使用 Windows 19.43 或更低版本下载的歌曲文件无需密钥。</Text>
|
||||||
<Text>使用 Windows 19.57 或更高版本下载的歌曲文件需要导入密钥,但方法尚未公开。</Text>
|
<Text>使用 Windows 19.51 或更高版本下载的歌曲文件需要导入密钥,但方法尚未公开。</Text>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Center, Container, Heading, Link, ListItem, UnorderedList } from '@chakra-ui/react';
|
import { Center, Container, Heading } from '@chakra-ui/react';
|
||||||
import { Header3 } from '~/components/HelpText/Headers';
|
import { Header3 } from '~/components/HelpText/Header3';
|
||||||
import { KuwoFAQ } from '~/faq/KuwoFAQ';
|
import { KuwoFAQ } from '~/faq/KuwoFAQ';
|
||||||
import { OtherFAQ } from '~/faq/OtherFAQ';
|
import { OtherFAQ } from '~/faq/OtherFAQ';
|
||||||
import { QQMusicFAQ } from '~/faq/QQMusicFAQ';
|
import { QQMusicFAQ } from '~/faq/QQMusicFAQ';
|
||||||
@ -10,23 +10,11 @@ export function FaqTab() {
|
|||||||
<Center>
|
<Center>
|
||||||
<Heading as="h2">常见问题解答</Heading>
|
<Heading as="h2">常见问题解答</Heading>
|
||||||
</Center>
|
</Center>
|
||||||
<Header3>答疑目录</Header3>
|
<Header3>QQ 音乐</Header3>
|
||||||
<UnorderedList>
|
|
||||||
<ListItem>
|
|
||||||
<Link href="#faq-qqmusic">QQ 音乐</Link>
|
|
||||||
</ListItem>
|
|
||||||
<ListItem>
|
|
||||||
<Link href="#faq-kuwo">酷我音乐</Link>
|
|
||||||
</ListItem>
|
|
||||||
<ListItem>
|
|
||||||
<Link href="#faq-other">其它问题</Link>
|
|
||||||
</ListItem>
|
|
||||||
</UnorderedList>
|
|
||||||
<Header3 id="faq-qqmusic">QQ 音乐</Header3>
|
|
||||||
<QQMusicFAQ />
|
<QQMusicFAQ />
|
||||||
<Header3 id="faq-kuwo">酷我音乐</Header3>
|
<Header3>酷我音乐</Header3>
|
||||||
<KuwoFAQ />
|
<KuwoFAQ />
|
||||||
<Header3 id="faq-other">其它问题</Header3>
|
<Header3>其它问题</Header3>
|
||||||
<OtherFAQ />
|
<OtherFAQ />
|
||||||
</Container>
|
</Container>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user