返回 AiToEarn
1 import { ForwardedRef, forwardRef, memo, useState } from 'react';
2 import styles from './rankingTags.module.scss';
3
4 export interface IRankingtagsRef {}
5
6 export interface IRankingtagsProps {
7 options: {
8 label: string;
9 value: string;
10 }[];
11 defaultValue: string;
12 disable?: boolean;
13 onChange: (value: string) => void;
14 }
15
16 const Rankingtags = memo(
17 forwardRef(
18 (
19 { options, defaultValue, disable, onChange }: IRankingtagsProps,
20 ref: ForwardedRef<IRankingtagsRef>,
21 ) => {
22 const [activeValue, setActiveValue] = useState(defaultValue);
23
24 return (
25 <div className={styles.rankingTags}>
26 {options.map((v) => {
27 return (
28 <div
29 className={[
30 'rankingTags-tag',
31 activeValue === v.value ? 'rankingTags-tag--active' : '',
32 ].join(' ')}
33 key={v.value}
34 onClick={() => {
35 if (disable) return;
36 onChange(v.value);
37 setActiveValue(v.value);
38 }}
39 >
40 {v.label}
41 </div>
42 );
43 })}
44 </div>
45 );
46 },
47 ),
48 );
49 Rankingtags.displayName = 'Rankingtags';
50
51 export default Rankingtags;
52
52 lines Plain Text