import React from "react"; import styles from "./index.less"; import { Transfer, Tree } from "antd"; const { TreeNode } = Tree; // Customize Table Transfer const isChecked = (selectedKeys, eventKey) => { return selectedKeys.indexOf(eventKey) !== -1; }; const generateTree = (treeNodes = [], checkedKeys = []) => { return treeNodes.map(({ children, ...props }) => ( {generateTree(children, checkedKeys)} )); }; const TreeTransfer = ({ dataSource, targetKeys, ...restProps }) => { const transferDataSource = []; function flatten(list = []) { list.forEach(item => { transferDataSource.push(item); flatten(item.children); }); } flatten(dataSource); return ( item.title} showSelectAll={false} > {({ direction, onItemSelect, selectedKeys }) => { if (direction === "left") { const checkedKeys = [...selectedKeys, ...targetKeys]; return ( { onItemSelect(eventKey, !isChecked(checkedKeys, eventKey)); }} onSelect={( _, { node: { props: { eventKey } } } ) => { onItemSelect(eventKey, !isChecked(checkedKeys, eventKey)); }} > {generateTree(dataSource, targetKeys)} ); } }} ); }; const treeData = [ { key: "0-0", title: "0-0" }, { key: "0-1", title: "0-1", children: [ { key: "0-1-0", title: "0-1-0" }, { key: "0-1-1", title: "0-1-1" } ] }, { key: "0-2", title: "0-3" } ]; class App extends React.Component { state = { targetKeys: [] }; onChange = targetKeys => { console.log("Target Keys:", targetKeys); this.setState({ targetKeys }); }; render() { const { targetKeys } = this.state; return (
); } } export default () => (
);