--- 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. ```jsx import { Tree } from 'antd'; const { TreeNode } = Tree; const treeData = [ { 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', }, ]; class Demo extends React.Component { state = { expandedKeys: ['0-0-0', '0-0-1'], autoExpandParent: true, checkedKeys: ['0-0-0'], selectedKeys: [], }; onExpand = expandedKeys => { console.log('onExpand', expandedKeys); // if not set autoExpandParent to false, if children expanded, parent can not collapse. // or, you can remove all expanded children keys. this.setState({ expandedKeys, autoExpandParent: false, }); }; onCheck = checkedKeys => { console.log('onCheck', checkedKeys); this.setState({ checkedKeys }); }; onSelect = (selectedKeys, info) => { console.log('onSelect', info); this.setState({ selectedKeys }); }; renderTreeNodes = data => data.map(item => { if (item.children) { return ( {this.renderTreeNodes(item.children)} ); } return ; }); render() { return ( {this.renderTreeNodes(treeData)} ); } } ReactDOM.render(, mountNode); ```