import { useState } from 'react' import { SortableList, Text } from '../../src' import { Demo } from '../components/Demo' import { PropsTable } from '../components/PropsTable' import { Section } from '../components/Section' const INITIAL = [ { key: 'pin', label: '常用推荐', meta: 12 }, { key: 'movie', label: '推荐电影', meta: 12 }, { key: 'ces', label: 'CES 现场报道', meta: 12 }, { key: 'tools', label: '开发工具', meta: 5 }, ] export function Sortables() { const [items, setItems] = useState(INITIAL) const [activeKey, setActiveKey] = useState('pin') const reorder = (keys: string[]) => { setItems((current) => keys .map((key) => current.find((item) => item.key === key)) .filter((item): item is (typeof INITIAL)[number] => item !== undefined), ) } return (
setItems(reorder(keys))} />`} >
{}} onReorder={() => {}} emptyText="还没有卡片" />`} >
undefined} onReorder={() => undefined} emptyText="还没有卡片" />
void', required: true, desc: '点击选中' }, { name: 'onReorder', type: '(keys: string[]) => void', required: true, desc: '拖拽后的完整顺序' }, { name: 'activeKey', type: 'string', desc: '当前选中项' }, { name: 'disabled', type: 'boolean', defaultValue: 'false', desc: '排序保存中,禁止再次拖动' }, { name: 'emptyText', type: 'ReactNode', desc: '空态文案,不传则不渲染' }, ]} /> 说明:拖拽只在条目之间生效;松手时若顺序没变不会触发 onReorder。
) }