import React, { useEffect, useState } from 'react'; import { Transfer } from 'antd'; import type { TransferProps } from 'antd'; interface RecordType { key: string; title: string; description: string; chosen: boolean; } const App: React.FC = () => { const [mockData, setMockData] = useState([]); const [targetKeys, setTargetKeys] = useState([]); const getMock = () => { const tempTargetKeys = []; const tempMockData = []; for (let i = 0; i < 20; i++) { const data = { key: i.toString(), title: `content${i + 1}`, description: `description of content${i + 1}`, chosen: i % 2 === 0, }; if (data.chosen) { tempTargetKeys.push(data.key); } tempMockData.push(data); } setMockData(tempMockData); setTargetKeys(tempTargetKeys); }; useEffect(() => { getMock(); }, []); const handleChange: TransferProps['onChange'] = (newTargetKeys, direction, moveKeys) => { console.log(newTargetKeys, direction, moveKeys); setTargetKeys(newTargetKeys); }; const renderItem = (item: RecordType) => { const customLabel = ( {item.title} - {item.description} ); return { label: customLabel, // for displayed item value: item.title, // for title and filter matching }; }; return ( ); }; export default App;