--- order: 1 title: zh-CN: 受控操作示例 en-US: Controlled Tree --- ## zh-CN 受控操作示例 ## en-US Controlled mode lets parent nodes reflect the status of child nodes more intelligently. ```tsx import { Tree } from 'antd'; import type { DataNode } from 'antd/lib/tree'; import React, { useState } from 'react'; const treeData: DataNode[] = [ { title: '0-0', key: '0-0', children: [ { title: '0-0-0', key: '0-0-0', children: [ { title: '0-0-0-0', key: '0-0-0-0' }, { title: '0-0-0-1', key: '0-0-0-1' }, { title: '0-0-0-2', key: '0-0-0-2' }, ], }, { title: '0-0-1', key: '0-0-1', children: [ { title: '0-0-1-0', key: '0-0-1-0' }, { title: '0-0-1-1', key: '0-0-1-1' }, { title: '0-0-1-2', key: '0-0-1-2' }, ], }, { title: '0-0-2', key: '0-0-2', }, ], }, { title: '0-1', key: '0-1', children: [ { title: '0-1-0-0', key: '0-1-0-0' }, { title: '0-1-0-1', key: '0-1-0-1' }, { title: '0-1-0-2', key: '0-1-0-2' }, ], }, { title: '0-2', key: '0-2', }, ]; const App: React.FC = () => { const [expandedKeys, setExpandedKeys] = useState(['0-0-0', '0-0-1']); const [checkedKeys, setCheckedKeys] = useState(['0-0-0']); const [selectedKeys, setSelectedKeys] = useState([]); const [autoExpandParent, setAutoExpandParent] = useState(true); const onExpand = (expandedKeysValue: React.Key[]) => { console.log('onExpand', expandedKeysValue); // if not set autoExpandParent to false, if children expanded, parent can not collapse. // or, you can remove all expanded children keys. setExpandedKeys(expandedKeysValue); setAutoExpandParent(false); }; const onCheck = (checkedKeysValue: React.Key[]) => { console.log('onCheck', checkedKeysValue); setCheckedKeys(checkedKeysValue); }; const onSelect = (selectedKeysValue: React.Key[], info: any) => { console.log('onSelect', info); setSelectedKeys(selectedKeysValue); }; return ( ); }; export default App; ```