Files
ant-design/components/tree/index.html
T
2017-03-11 12:51:12 +08:00

555 lines
165 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="An enterprise-class UI design language and React-based implementation">
<meta name="description" content="A set of high-quality React components">
<meta name="description" content="One of best React UI library for enterprise background">
<title>Ant Design - A UI Design Language</title>
<script>
(function() {
function isLocalStorageNameSupported() {
var testKey = 'test';
var storage = window.localStorage;
try {
storage.setItem(testKey, '1');
storage.removeItem(testKey);
return true;
} catch (error) {
return false;
}
}
// 优先级提高到所有静态资源的前面,语言不对,加载其他静态资源没意义
var pathname = location.pathname;
function isZhCN(pathname) {
return /-cn\/?$/.test(pathname);
}
function getLocalizedPathname(path, zhCN) {
var pathname = path.startsWith('/') ? path : '/' + path;
if (!zhCN) { // to enUS
return /\/?index-cn/.test(pathname) ? '/' : pathname.replace('-cn', '');
} else if (pathname === '/') {
return '/index-cn';
} else if (pathname.endsWith('/')) {
return pathname.replace(/\/$/, '-cn/');
}
return pathname + '-cn';
}
// 兼容旧的 URL `?locale=...`
var queryString = location.search;
if (queryString) {
var isZhCNConfig = queryString.indexOf('zh-CN') > -1;
if (isZhCNConfig && !isZhCN(pathname)) {
location.pathname = getLocalizedPathname(pathname, isZhCNConfig)
}
}
// 首页无视链接里面的语言设置 https://github.com/ant-design/ant-design/issues/4552
if (isLocalStorageNameSupported() && (pathname === '/' || pathname === '/index-cn')) {
var lang = (window.localStorage && localStorage.getItem('locale')) || (navigator.language.toLowerCase() === 'zh-cn' ? 'zh-CN' : 'en-US');
// safari is 'zh-cn', while other browser is 'zh-CN';
if ((lang === 'zh-CN') !== isZhCN(pathname)) {
location.pathname = getLocalizedPathname(pathname, lang === 'zh-CN');
}
}
document.documentElement.className += isZhCN(pathname) ? 'zh-cn' : 'en-us';
})()
</script>
<link rel="icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.cnpmjs.org/css?family=Lato:400,700|Raleway"/>
<link rel="stylesheet" type="text/css" href="/index.css"/>
<style id="nprogress-style">
#nprogress { display: none }
</style>
<!--[if lte IE 10]>
<script
src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,media-match/2.0.2/media.match.min.js"></script>
<![endif]-->
<script>
if (!window.Intl) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/intl/1.0.1/??Intl.js,locale-data/jsonp/en.js,locale-data/jsonp/zh.js">' + '<' + '/script>');
}
if (!window.Promise) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"' + '>' + '<' + '/' + 'script>');
}
// Enable Google Analytics
if (!location.port) {
/* eslint-disable */
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-72788897-1', 'auto');
ga('send', 'pageview');
/* eslint-enable */
}
</script>
</head>
<body>
<div id="react-content">
<div class="page-wrapper" data-reactroot="" data-reactid="1" data-react-checksum="766569949"><header id="header" class="clearfix" data-reactid="2"><div class="ant-row" data-reactid="3"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-5 ant-col-lg-4" data-reactid="4"><a id="logo" href="/" data-reactid="5"><img alt="logo" src="https://t.alipayobjects.com/images/rmsweb/T1B9hfXcdvXXXXXXXX.svg" data-reactid="6"/><span data-reactid="7">Ant Design</span></a></div><div class="ant-col-xs-0 ant-col-sm-0 ant-col-md-19 ant-col-lg-20" data-reactid="8"><div id="search-box" data-reactid="9"><div class="ant-select ant-select-combobox ant-select-enabled" data-reactid="10"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" data-reactid="11"><div class="ant-select-selection__rendered" data-reactid="12"><div style="display:block;user-select:none;-webkit-user-select:none;" unselectable="unselectable" class="ant-select-selection__placeholder" data-reactid="13">Search Components...</div><ul data-reactid="14"><li class="ant-select-search ant-select-search--inline" data-reactid="15"><div class="ant-select-search__field__wrap" data-reactid="16"><input value="" class="ant-select-search__field" data-reactid="17"/><span class="ant-select-search__field__mirror" data-reactid="18"><!-- react-text: 19 --><!-- /react-text --><!-- react-text: 20 --> <!-- /react-text --></span></div></li></ul></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="21"><b data-reactid="22"></b></span></div></div></div><button type="button" class="ant-btn ant-btn-ghost ant-btn-sm lang" data-reactid="23"><span data-reactid="24">中文</span></button><div class="ant-select-sm version ant-select ant-select-enabled" data-reactid="25"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" tabindex="0" data-reactid="26"><div class="ant-select-selection__rendered" data-reactid="27"><div class="ant-select-selection-selected-value" title="2.8.1" style="display:block;opacity:1;" data-reactid="28">2.8.1</div></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="29"><b data-reactid="30"></b></span></div></div><ul class="ant-menu ant-menu-horizontal ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" id="nav" tabindex="0" data-reactid="31"><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="32"><a href="/" data-reactid="33"><span data-reactid="34">Home</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="35"><a href="/docs/spec/introduce" data-reactid="36"><span data-reactid="37">Specification</span></a></li><li class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="38"><a href="/docs/react/introduce" data-reactid="39"><span data-reactid="40">Components</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="41"><a href="/docs/pattern/navigation" data-reactid="42"><span data-reactid="43">Pattern</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="44"><a href="/docs/resource/download" data-reactid="45"><span data-reactid="46">Resource</span></a></li></ul></div></div></header><div class="main-wrapper" data-reactid="47"><div class="ant-row" data-reactid="48"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-4" data-reactid="49"><ul class="ant-menu ant-menu-inline aside-container ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" tabindex="0" data-reactid="50"><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="51"><a href="/docs/react/introduce" data-reactid="52">Ant Design of React</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="53"><a href="/docs/react/getting-started" data-reactid="54">Getting Started</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="55"><a href="/docs/react/practical-projects" data-reactid="56">Real project with dva</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="57"><a href="/docs/react/use-with-create-react-app" data-reactid="58">Use in create-react-app</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="59"><a href="/docs/react/customize-theme" data-reactid="60">Customize Theme</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="61"><a href="/changelog" data-reactid="62">Change Log</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="63"><a href="/docs/react/recommendation" data-reactid="64">Third-Party Libraries</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="65"><a href="https://github.com/websemantics/awesome-ant-design" target="_blank" rel="noopener noreferrer" class="menu-item-link-outside" data-reactid="66"><!-- react-text: 67 -->Awesome Ant Design<!-- /react-text --><!-- react-text: 68 --> <!-- /react-text --><i class="anticon anticon-export" data-reactid="69"></i></a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="70"><a href="//github.com/ant-design/intl-example" target="_blank" rel="noopener noreferrer" class="menu-item-link-outside" data-reactid="71"><!-- react-text: 72 -->i18n Solution<!-- /react-text --><!-- react-text: 73 --> <!-- /react-text --><i class="anticon anticon-export" data-reactid="74"></i></a></li><li class="ant-menu-submenu-inline ant-menu-submenu-open ant-menu-submenu-selected ant-menu-submenu" data-reactid="75"><div style="padding-left:24px;" class="ant-menu-submenu-title" aria-expanded="true" aria-owns="Components$Menu" aria-haspopup="true" data-reactid="76"><h4 data-reactid="77">Components</h4></div><ul class="ant-menu ant-menu-inline ant-menu-sub" role="menu" aria-activedescendant="" id="Components$Menu" data-reactid="78"><li class=" ant-menu-item-group" data-reactid="79"><div class="ant-menu-item-group-title" data-reactid="80">General</div><ul class="ant-menu-item-group-list" data-reactid="81"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="82"><a href="/components/button/" data-reactid="83"><span data-reactid="84">Button</span><span class="chinese" data-reactid="85"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="86"><a href="/components/icon/" data-reactid="87"><span data-reactid="88">Icon</span><span class="chinese" data-reactid="89"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="90"><div class="ant-menu-item-group-title" data-reactid="91">Layout</div><ul class="ant-menu-item-group-list" data-reactid="92"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="93"><a href="/components/grid/" data-reactid="94"><span data-reactid="95">Grid</span><span class="chinese" data-reactid="96"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="97"><a href="/components/layout/" data-reactid="98"><span data-reactid="99">Layout</span><span class="chinese" data-reactid="100"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="101"><div class="ant-menu-item-group-title" data-reactid="102">Navigation</div><ul class="ant-menu-item-group-list" data-reactid="103"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="104"><a href="/components/affix/" data-reactid="105"><span data-reactid="106">Affix</span><span class="chinese" data-reactid="107"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="108"><a href="/components/breadcrumb/" data-reactid="109"><span data-reactid="110">Breadcrumb</span><span class="chinese" data-reactid="111"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="112"><a href="/components/back-top/" data-reactid="113"><span data-reactid="114">BackTop</span><span class="chinese" data-reactid="115"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="116"><a href="/components/dropdown/" data-reactid="117"><span data-reactid="118">Dropdown</span><span class="chinese" data-reactid="119"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="120"><a href="/components/menu/" data-reactid="121"><span data-reactid="122">Menu</span><span class="chinese" data-reactid="123"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="124"><a href="/components/pagination/" data-reactid="125"><span data-reactid="126">Pagination</span><span class="chinese" data-reactid="127"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="128"><a href="/components/steps/" data-reactid="129"><span data-reactid="130">Steps</span><span class="chinese" data-reactid="131"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="132"><a href="/components/tabs/" data-reactid="133"><span data-reactid="134">Tabs</span><span class="chinese" data-reactid="135"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="136"><div class="ant-menu-item-group-title" data-reactid="137">Data Entry</div><ul class="ant-menu-item-group-list" data-reactid="138"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="139"><a href="/components/auto-complete/" data-reactid="140"><span data-reactid="141">AutoComplete</span><span class="chinese" data-reactid="142"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="143"><a href="/components/cascader/" data-reactid="144"><span data-reactid="145">Cascader</span><span class="chinese" data-reactid="146"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="147"><a href="/components/checkbox/" data-reactid="148"><span data-reactid="149">Checkbox</span><span class="chinese" data-reactid="150"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="151"><a href="/components/date-picker/" data-reactid="152"><span data-reactid="153">DatePicker</span><span class="chinese" data-reactid="154"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="155"><a href="/components/form/" data-reactid="156"><span data-reactid="157">Form</span><span class="chinese" data-reactid="158"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="159"><a href="/components/input/" data-reactid="160"><span data-reactid="161">Input</span><span class="chinese" data-reactid="162"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="163"><a href="/components/input-number/" data-reactid="164"><span data-reactid="165">InputNumber</span><span class="chinese" data-reactid="166"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="167"><a href="/components/mention/" data-reactid="168"><span data-reactid="169">Mention</span><span class="chinese" data-reactid="170"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="171"><a href="/components/rate/" data-reactid="172"><span data-reactid="173">Rate</span><span class="chinese" data-reactid="174"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="175"><a href="/components/radio/" data-reactid="176"><span data-reactid="177">Radio</span><span class="chinese" data-reactid="178"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="179"><a href="/components/select/" data-reactid="180"><span data-reactid="181">Select</span><span class="chinese" data-reactid="182"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="183"><a href="/components/slider/" data-reactid="184"><span data-reactid="185">Slider</span><span class="chinese" data-reactid="186"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="187"><a href="/components/switch/" data-reactid="188"><span data-reactid="189">Switch</span><span class="chinese" data-reactid="190"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="191"><a href="/components/tree-select/" data-reactid="192"><span data-reactid="193">TreeSelect</span><span class="chinese" data-reactid="194"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="195"><a href="/components/time-picker/" data-reactid="196"><span data-reactid="197">TimePicker</span><span class="chinese" data-reactid="198"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="199"><a href="/components/transfer/" data-reactid="200"><span data-reactid="201">Transfer</span><span class="chinese" data-reactid="202"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="203"><a href="/components/upload/" data-reactid="204"><span data-reactid="205">Upload</span><span class="chinese" data-reactid="206"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="207"><div class="ant-menu-item-group-title" data-reactid="208">Data Display</div><ul class="ant-menu-item-group-list" data-reactid="209"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="210"><a href="/components/badge/" data-reactid="211"><span data-reactid="212">Badge</span><span class="chinese" data-reactid="213"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="214"><a href="/components/calendar/" data-reactid="215"><span data-reactid="216">Calendar</span><span class="chinese" data-reactid="217"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="218"><a href="/components/card/" data-reactid="219"><span data-reactid="220">Card</span><span class="chinese" data-reactid="221"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="222"><a href="/components/carousel/" data-reactid="223"><span data-reactid="224">Carousel</span><span class="chinese" data-reactid="225"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="226"><a href="/components/collapse/" data-reactid="227"><span data-reactid="228">Collapse</span><span class="chinese" data-reactid="229"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="230"><a href="/components/popover/" data-reactid="231"><span data-reactid="232">Popover</span><span class="chinese" data-reactid="233"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="234"><a href="/components/tooltip/" data-reactid="235"><span data-reactid="236">Tooltip</span><span class="chinese" data-reactid="237"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="238"><a href="/components/table/" data-reactid="239"><span data-reactid="240">Table</span><span class="chinese" data-reactid="241"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="242"><a href="/components/tag/" data-reactid="243"><span data-reactid="244">Tag</span><span class="chinese" data-reactid="245"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="246"><a href="/components/timeline/" data-reactid="247"><span data-reactid="248">Timeline</span><span class="chinese" data-reactid="249"></span></a></li><li style="padding-left:48px;" class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="250"><a href="/components/tree/" data-reactid="251"><span data-reactid="252">Tree</span><span class="chinese" data-reactid="253"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="254"><div class="ant-menu-item-group-title" data-reactid="255">Feedback</div><ul class="ant-menu-item-group-list" data-reactid="256"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="257"><a href="/components/alert/" data-reactid="258"><span data-reactid="259">Alert</span><span class="chinese" data-reactid="260"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="261"><a href="/components/modal/" data-reactid="262"><span data-reactid="263">Modal</span><span class="chinese" data-reactid="264"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="265"><a href="/components/message/" data-reactid="266"><span data-reactid="267">Message</span><span class="chinese" data-reactid="268"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="269"><a href="/components/notification/" data-reactid="270"><span data-reactid="271">Notification</span><span class="chinese" data-reactid="272"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="273"><a href="/components/progress/" data-reactid="274"><span data-reactid="275">Progress</span><span class="chinese" data-reactid="276"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="277"><a href="/components/popconfirm/" data-reactid="278"><span data-reactid="279">Popconfirm</span><span class="chinese" data-reactid="280"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="281"><a href="/components/spin/" data-reactid="282"><span data-reactid="283">Spin</span><span class="chinese" data-reactid="284"></span></a></li></ul></li><li class=" ant-menu-item-group" data-reactid="285"><div class="ant-menu-item-group-title" data-reactid="286">Other</div><ul class="ant-menu-item-group-list" data-reactid="287"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="288"><a href="/components/anchor/" data-reactid="289"><span data-reactid="290">Anchor</span><span class="chinese" data-reactid="291"></span></a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="292"><a href="/components/locale-provider/" data-reactid="293"><span data-reactid="294">LocaleProvider</span><span class="chinese" data-reactid="295"></span></a></li></ul></li></ul></li></ul></div><div class="main-container ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-lg-20" data-reactid="296"><article data-reactid="297"><div class="toc-affix" data-reactid="298"><div class="" data-reactid="299"><ul class="toc demos-anchor" data-reactid="300"><li title="basic" data-reactid="301"><a href="#components-tree-demo-basic" data-reactid="302">basic</a></li><li title="basic controlled example" data-reactid="303"><a href="#components-tree-demo-basic-controlled" data-reactid="304">basic controlled example</a></li><li title="draggable" data-reactid="305"><a href="#components-tree-demo-draggable" data-reactid="306">draggable</a></li><li title="load data asynchronously" data-reactid="307"><a href="#components-tree-demo-dynamic" data-reactid="308">load data asynchronously</a></li><li title="Searchable" data-reactid="309"><a href="#components-tree-demo-search" data-reactid="310">Searchable</a></li></ul></div></div><section class="markdown" data-reactid="311"><h1 data-reactid="312"><!-- react-text: 313 -->Tree<!-- /react-text --><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/index.en-US.md" data-reactid="314"><i class="anticon anticon-edit" data-reactid="315"></i></a></h1><section class="markdown" data-reactid="316"><h2 id="When-To-Use" data-reactid="317"><span data-reactid="318"><!-- react-text: 319 -->When To Use<!-- /react-text --></span><a href="#When-To-Use" class="anchor" data-reactid="320">#</a></h2><p data-reactid="321"><!-- react-text: 322 -->Directory, organization, biological classification, country, and etc. Almost things of the world are tree structure. The <!-- /react-text --><code data-reactid="323"><!-- react-text: 324 -->Tree<!-- /react-text --></code><!-- react-text: 325 --> component is a way of representing the hierarchical relationship of these thingsand you also can expand, collapse, select the treeNodes of it.<!-- /react-text --></p></section><h2 data-reactid="326"><span data-reactid="327">Examples</span><i class="anticon anticon-appstore code-box-expand-trigger" title="展开全部代码" data-reactid="328"></i></h2></section><div class="ant-row" style="margin-left:-8px;margin-right:-8px;" data-reactid="329"><div style="padding-left:8px;padding-right:8px;" class="ant-col-12 code-boxes-col-2-1" data-reactid="330"><section class="code-box" id="components-tree-demo-basic" data-reactid="331"><section class="code-box-demo" data-reactid="332"><ul class="ant-tree" role="tree-node" unselectable="true" data-reactid="333"><li class="" data-reactid="334"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="335"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="336"><span class="ant-tree-checkbox-inner" data-reactid="337"></span></span><a title="parent 1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="338"><span class="ant-tree-title" data-reactid="339">parent 1</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="340"><li class="ant-tree-treenode-disabled" data-reactid="341"><span class="ant-tree-switcher ant-tree-noline_open ant-tree-switcher-disabled" data-reactid="342"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked ant-tree-checkbox-disabled" data-reactid="343"><span class="ant-tree-checkbox-inner" data-reactid="344"></span></span><a title="parent 1-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="345"><span class="ant-tree-title" data-reactid="346">parent 1-0</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="347"><li class="" data-reactid="348"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="349"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked ant-tree-checkbox-disabled" data-reactid="350"><span class="ant-tree-checkbox-inner" data-reactid="351"></span></span><a title="leaf" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="352"><span class="ant-tree-title" data-reactid="353">leaf</span></a></li><li class="" data-reactid="354"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="355"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="356"><span class="ant-tree-checkbox-inner" data-reactid="357"></span></span><a title="leaf" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="358"><span class="ant-tree-title" data-reactid="359">leaf</span></a></li></ul></li><li class="" data-reactid="360"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="361"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="362"><span class="ant-tree-checkbox-inner" data-reactid="363"></span></span><a title="parent 1-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="364"><span class="ant-tree-title" data-reactid="365">parent 1-1</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="366"><li class="" data-reactid="367"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="368"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="369"><span class="ant-tree-checkbox-inner" data-reactid="370"></span></span><a title="" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="371"><span class="ant-tree-title" data-reactid="372"><span style="color:#08c;" data-reactid="373">sss</span></span></a></li></ul></li></ul></li></ul></section><section class="code-box-meta markdown" data-reactid="374"><div class="code-box-title" data-reactid="375"><a href="#components-tree-demo-basic" data-reactid="376">basic</a><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/demo/basic.md" data-reactid="377"><i class="anticon anticon-edit" data-reactid="378"></i></a></div><div data-reactid="379"><p data-reactid="380"><!-- react-text: 381 -->The most basic usage, tell you how to use checkable, selectable, disabled, defaultExpandKeys, and etc.<!-- /react-text --></p></div><i title="Show Code" class="anticon anticon-down-circle-o collapse" data-reactid="382"></i></section><section class="highlight-wrapper" data-reactid="383"><div class="highlight" data-reactid="384"><i class="anticon anticon-copy code-box-code-copy" data-reactid="385"></i><pre class="language-jsx" data-reactid="386"><code data-reactid="387"><span class="token keyword">import</span> <span class="token punctuation">{</span> Tree <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'antd'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> TreeNode <span class="token operator">=</span> Tree<span class="token punctuation">.</span>TreeNode<span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">Demo</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span>
onSelect <span class="token operator">=</span> <span class="token punctuation">(</span>selectedKeys<span class="token punctuation">,</span> info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'selected'</span><span class="token punctuation">,</span> selectedKeys<span class="token punctuation">,</span> info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onCheck <span class="token operator">=</span> <span class="token punctuation">(</span>checkedKeys<span class="token punctuation">,</span> info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'onCheck'</span><span class="token punctuation">,</span> checkedKeys<span class="token punctuation">,</span> info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span>
<span class="token attr-name">checkable</span>
<span class="token attr-name">defaultExpandedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">[</span><span class="token string">'0-0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-1'</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span>
<span class="token attr-name">defaultSelectedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">[</span><span class="token string">'0-0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-1'</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span>
<span class="token attr-name">defaultCheckedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">[</span><span class="token string">'0-0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-1'</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span>
<span class="token attr-name">onSelect</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onSelect<span class="token punctuation">}</span></span>
<span class="token attr-name">onCheck</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onCheck<span class="token punctuation">}</span></span>
<span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>parent</span> <span class="token attr-name">1"</span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>0-0<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>parent</span> <span class="token attr-name">1-0"</span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>0-0-0<span class="token punctuation">"</span></span> <span class="token attr-name">disabled</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>leaf<span class="token punctuation">"</span></span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>0-0-0-0<span class="token punctuation">"</span></span> <span class="token attr-name">disableCheckbox</span> <span class="token punctuation">/></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>leaf<span class="token punctuation">"</span></span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>0-0-0-1<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>parent</span> <span class="token attr-name">1-1"</span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>0-0-1<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token operator">&lt;</span>span style<span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">{</span> color<span class="token punctuation">:</span> <span class="token string">'#08c'</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></span><span class="token punctuation">></span></span>sss<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span><span class="token punctuation">}</span> key<span class="token operator">=</span><span class="token string">"0-0-1-0"</span> <span class="token operator">/</span><span class="token operator">></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
ReactDOM<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Demo</span> <span class="token punctuation">/></span></span><span class="token punctuation">,</span> mountNode<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div></section></section><section class="code-box" id="components-tree-demo-draggable" data-reactid="388"><section class="code-box-demo" data-reactid="389"><ul class="draggable-tree ant-tree" role="tree-node" unselectable="true" data-reactid="390"><li class="" data-reactid="391"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="392"></span><a title="0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open draggable" draggable="true" aria-grabbed="true" data-reactid="393"><span class="ant-tree-title" data-reactid="394">0-0</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="395"><li class="" data-reactid="396"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="397"></span><a title="0-0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open draggable" draggable="true" aria-grabbed="true" data-reactid="398"><span class="ant-tree-title" data-reactid="399">0-0-0</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="400"><li class="" data-reactid="401"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="402"></span><a title="0-0-0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal draggable" draggable="true" aria-grabbed="true" data-reactid="403"><span class="ant-tree-title" data-reactid="404">0-0-0-0</span></a></li><li class="" data-reactid="405"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="406"></span><a title="0-0-0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal draggable" draggable="true" aria-grabbed="true" data-reactid="407"><span class="ant-tree-title" data-reactid="408">0-0-0-1</span></a></li><li class="" data-reactid="409"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="410"></span><a title="0-0-0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal draggable" draggable="true" aria-grabbed="true" data-reactid="411"><span class="ant-tree-title" data-reactid="412">0-0-0-2</span></a></li></ul></li><li class="" data-reactid="413"><span class="ant-tree-switcher ant-tree-noline_close" data-reactid="414"></span><a title="0-0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close draggable" draggable="true" aria-grabbed="true" data-reactid="415"><span class="ant-tree-title" data-reactid="416">0-0-1</span></a><!-- react-empty: 417 --></li><li class="" data-reactid="418"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="419"></span><a title="0-0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal draggable" draggable="true" aria-grabbed="true" data-reactid="420"><span class="ant-tree-title" data-reactid="421">0-0-2</span></a></li></ul></li><li class="" data-reactid="422"><span class="ant-tree-switcher ant-tree-noline_close" data-reactid="423"></span><a title="0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close draggable" draggable="true" aria-grabbed="true" data-reactid="424"><span class="ant-tree-title" data-reactid="425">0-1</span></a><!-- react-empty: 426 --></li><li class="" data-reactid="427"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="428"></span><a title="0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal draggable" draggable="true" aria-grabbed="true" data-reactid="429"><span class="ant-tree-title" data-reactid="430">0-2</span></a></li></ul><style data-reactid="431">// You can add the following CSS to your project to make draggable area bigger
#components-tree-demo-draggable .draggable-tree .ant-tree-node-content-wrapper {
width: calc(100% - 18px);
}</style></section><section class="code-box-meta markdown" data-reactid="432"><div class="code-box-title" data-reactid="433"><a href="#components-tree-demo-draggable" data-reactid="434">draggable</a><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/demo/draggable.md" data-reactid="435"><i class="anticon anticon-edit" data-reactid="436"></i></a></div><div data-reactid="437"><p data-reactid="438"><!-- react-text: 439 -->Drag treeNode to insert after the other treeNode or insert into the other parent TreeNode.<!-- /react-text --></p></div><i title="Show Code" class="anticon anticon-down-circle-o collapse" data-reactid="440"></i></section><section class="highlight-wrapper" data-reactid="441"><div class="highlight" data-reactid="442"><i class="anticon anticon-copy code-box-code-copy" data-reactid="443"></i><pre class="language-jsx" data-reactid="444"><code data-reactid="445"><span class="token keyword">import</span> <span class="token punctuation">{</span> Tree <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'antd'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> TreeNode <span class="token operator">=</span> Tree<span class="token punctuation">.</span>TreeNode<span class="token punctuation">;</span>
<span class="token keyword">const</span> x <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> y <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> z <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> gData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> generateData <span class="token operator">=</span> <span class="token punctuation">(</span>_level<span class="token punctuation">,</span> _preKey<span class="token punctuation">,</span> _tns<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> preKey <span class="token operator">=</span> _preKey <span class="token operator">||</span> <span class="token string">'0'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> tns <span class="token operator">=</span> _tns <span class="token operator">||</span> gData<span class="token punctuation">;</span>
<span class="token keyword">const</span> children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> x<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> key <span class="token operator">=</span> <span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>preKey<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">;</span>
tns<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> title<span class="token punctuation">:</span> key<span class="token punctuation">,</span> key <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> y<span class="token punctuation">)</span> <span class="token punctuation">{</span>
children<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>_level <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> tns<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">const</span> level <span class="token operator">=</span> _level <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>
children<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> index<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token function">generateData</span><span class="token punctuation">(</span>level<span class="token punctuation">,</span> key<span class="token punctuation">,</span> tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">generateData</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">Demo</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span>
state <span class="token operator">=</span> <span class="token punctuation">{</span>
gData<span class="token punctuation">,</span>
expandedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-0-0'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
onDragEnter <span class="token operator">=</span> <span class="token punctuation">(</span>info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">// expandedKeys 需要受控时设置</span>
<span class="token comment" spellcheck="true">// this.setState({</span>
<span class="token comment" spellcheck="true">// expandedKeys: info.expandedKeys,</span>
<span class="token comment" spellcheck="true">// });</span>
<span class="token punctuation">}</span>
onDrop <span class="token operator">=</span> <span class="token punctuation">(</span>info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> dropKey <span class="token operator">=</span> info<span class="token punctuation">.</span>node<span class="token punctuation">.</span>props<span class="token punctuation">.</span>eventKey<span class="token punctuation">;</span>
<span class="token keyword">const</span> dragKey <span class="token operator">=</span> info<span class="token punctuation">.</span>dragNode<span class="token punctuation">.</span>props<span class="token punctuation">.</span>eventKey<span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">// const dragNodesKeys = info.dragNodesKeys;</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">,</span> key<span class="token punctuation">,</span> callback<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
data<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">,</span> index<span class="token punctuation">,</span> arr<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>key <span class="token operator">===</span> key<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">callback</span><span class="token punctuation">(</span>item<span class="token punctuation">,</span> index<span class="token punctuation">,</span> arr<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">,</span> key<span class="token punctuation">,</span> callback<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>gData<span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">let</span> dragObj<span class="token punctuation">;</span>
<span class="token function">loop</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> dragKey<span class="token punctuation">,</span> <span class="token punctuation">(</span>item<span class="token punctuation">,</span> index<span class="token punctuation">,</span> arr<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
arr<span class="token punctuation">.</span><span class="token function">splice</span><span class="token punctuation">(</span>index<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
dragObj <span class="token operator">=</span> item<span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>info<span class="token punctuation">.</span>dropToGap<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">let</span> ar<span class="token punctuation">;</span>
<span class="token keyword">let</span> i<span class="token punctuation">;</span>
<span class="token function">loop</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> dropKey<span class="token punctuation">,</span> <span class="token punctuation">(</span>item<span class="token punctuation">,</span> index<span class="token punctuation">,</span> arr<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
ar <span class="token operator">=</span> arr<span class="token punctuation">;</span>
i <span class="token operator">=</span> index<span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
ar<span class="token punctuation">.</span><span class="token function">splice</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> dragObj<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token function">loop</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> dropKey<span class="token punctuation">,</span> <span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
item<span class="token punctuation">.</span>children <span class="token operator">=</span> item<span class="token punctuation">.</span>children <span class="token operator">||</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">// where to insert 示例添加到尾部,可以是随意位置</span>
item<span class="token punctuation">.</span>children<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>dragObj<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
gData<span class="token punctuation">:</span> data<span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> data <span class="token operator">=</span><span class="token operator">></span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children <span class="token operator">&amp;&amp;</span> item<span class="token punctuation">.</span>children<span class="token punctuation">.</span>length<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span><span class="token punctuation">></span></span><span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span>
<span class="token attr-name">className</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>draggable-tree<span class="token punctuation">"</span></span>
<span class="token attr-name">defaultExpandedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>expandedKeys<span class="token punctuation">}</span></span>
<span class="token attr-name">draggable</span>
<span class="token attr-name">onDragEnter</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onDragEnter<span class="token punctuation">}</span></span>
<span class="token attr-name">onDrop</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onDrop<span class="token punctuation">}</span></span>
<span class="token punctuation">></span></span>
<span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>gData<span class="token punctuation">)</span><span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
ReactDOM<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Demo</span> <span class="token punctuation">/></span></span><span class="token punctuation">,</span> mountNode<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div><div class="highlight" data-reactid="446"><pre data-reactid="447"><code class="css" data-reactid="448"><span class="token selector">// You can add the following CSS to your project to make draggable area bigger
<span class="token id">#components-tree-demo-draggable</span> <span class="token class">.draggable-tree</span> <span class="token class">.ant-tree-node-content-wrapper</span> </span><span class="token punctuation">{</span>
<span class="token property">width</span><span class="token punctuation">:</span> <span class="token function">calc</span><span class="token punctuation">(</span><span class="token number">100%</span> - <span class="token number">18</span>px<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre></div></section></section><section class="code-box" id="components-tree-demo-search" data-reactid="449"><section class="code-box-demo" data-reactid="450"><div data-reactid="451"><span class="ant-input-preSuffix-wrapper" style="width:300px;" data-reactid="452"><input type="text" class="ant-input ant-input-search" placeholder="Search" data-reactid="453"/><span class="ant-input-suffix" data-reactid="454"><i class="anticon anticon-search ant-input-search-icon" data-reactid="455"></i></span></span><ul class="ant-tree" role="tree-node" unselectable="true" data-reactid="456"><li class="" data-reactid="457"><span class="ant-tree-switcher ant-tree-noline_close" data-reactid="458"></span><a title="" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close" data-reactid="459"><span class="ant-tree-title" data-reactid="460"><span data-reactid="461"><!-- react-text: 462 --><!-- /react-text --><span style="color:#f50;" data-reactid="463"></span><!-- react-text: 464 -->0-0<!-- /react-text --></span></span></a><!-- react-empty: 465 --></li><li class="" data-reactid="466"><span class="ant-tree-switcher ant-tree-noline_close" data-reactid="467"></span><a title="" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close" data-reactid="468"><span class="ant-tree-title" data-reactid="469"><span data-reactid="470"><!-- react-text: 471 --><!-- /react-text --><span style="color:#f50;" data-reactid="472"></span><!-- react-text: 473 -->0-1<!-- /react-text --></span></span></a><!-- react-empty: 474 --></li><li class="" data-reactid="475"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="476"></span><a title="" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="477"><span class="ant-tree-title" data-reactid="478"><span data-reactid="479"><!-- react-text: 480 --><!-- /react-text --><span style="color:#f50;" data-reactid="481"></span><!-- react-text: 482 -->0-2<!-- /react-text --></span></span></a></li></ul></div></section><section class="code-box-meta markdown" data-reactid="483"><div class="code-box-title" data-reactid="484"><a href="#components-tree-demo-search" data-reactid="485">Searchable</a><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/demo/search.md" data-reactid="486"><i class="anticon anticon-edit" data-reactid="487"></i></a></div><div data-reactid="488"><p data-reactid="489"><!-- react-text: 490 -->Searchable Tree.<!-- /react-text --></p></div><i title="Show Code" class="anticon anticon-down-circle-o collapse" data-reactid="491"></i></section><section class="highlight-wrapper" data-reactid="492"><div class="highlight" data-reactid="493"><i class="anticon anticon-copy code-box-code-copy" data-reactid="494"></i><pre class="language-jsx" data-reactid="495"><code data-reactid="496"><span class="token keyword">import</span> <span class="token punctuation">{</span> Tree<span class="token punctuation">,</span> Input <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'antd'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> TreeNode <span class="token operator">=</span> Tree<span class="token punctuation">.</span>TreeNode<span class="token punctuation">;</span>
<span class="token keyword">const</span> Search <span class="token operator">=</span> Input<span class="token punctuation">.</span>Search<span class="token punctuation">;</span>
<span class="token keyword">const</span> x <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> y <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> z <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> gData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> generateData <span class="token operator">=</span> <span class="token punctuation">(</span>_level<span class="token punctuation">,</span> _preKey<span class="token punctuation">,</span> _tns<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> preKey <span class="token operator">=</span> _preKey <span class="token operator">||</span> <span class="token string">'0'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> tns <span class="token operator">=</span> _tns <span class="token operator">||</span> gData<span class="token punctuation">;</span>
<span class="token keyword">const</span> children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> x<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> key <span class="token operator">=</span> <span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>preKey<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">;</span>
tns<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> title<span class="token punctuation">:</span> key<span class="token punctuation">,</span> key <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> y<span class="token punctuation">)</span> <span class="token punctuation">{</span>
children<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>_level <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> tns<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">const</span> level <span class="token operator">=</span> _level <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>
children<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> index<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token function">generateData</span><span class="token punctuation">(</span>level<span class="token punctuation">,</span> key<span class="token punctuation">,</span> tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">generateData</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> dataList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> generateList <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> node <span class="token operator">=</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> key <span class="token operator">=</span> node<span class="token punctuation">.</span>key<span class="token punctuation">;</span>
dataList<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> key<span class="token punctuation">,</span> title<span class="token punctuation">:</span> key <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>node<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">generateList</span><span class="token punctuation">(</span>node<span class="token punctuation">.</span>children<span class="token punctuation">,</span> node<span class="token punctuation">.</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">generateList</span><span class="token punctuation">(</span>gData<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> getParentKey <span class="token operator">=</span> <span class="token punctuation">(</span>key<span class="token punctuation">,</span> tree<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">let</span> parentKey<span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> tree<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> node <span class="token operator">=</span> tree<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>node<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>node<span class="token punctuation">.</span>children<span class="token punctuation">.</span><span class="token function">some</span><span class="token punctuation">(</span>item <span class="token operator">=</span><span class="token operator">></span> item<span class="token punctuation">.</span>key <span class="token operator">===</span> key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
parentKey <span class="token operator">=</span> node<span class="token punctuation">.</span>key<span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">getParentKey</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> node<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
parentKey <span class="token operator">=</span> <span class="token function">getParentKey</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> node<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> parentKey<span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">SearchTree</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span>
state <span class="token operator">=</span> <span class="token punctuation">{</span>
expandedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
searchValue<span class="token punctuation">:</span> <span class="token string">''</span><span class="token punctuation">,</span>
autoExpandParent<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
onExpand <span class="token operator">=</span> <span class="token punctuation">(</span>expandedKeys<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
expandedKeys<span class="token punctuation">,</span>
autoExpandParent<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onChange <span class="token operator">=</span> <span class="token punctuation">(</span>e<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> value <span class="token operator">=</span> e<span class="token punctuation">.</span>target<span class="token punctuation">.</span>value<span class="token punctuation">;</span>
<span class="token keyword">const</span> expandedKeys <span class="token operator">=</span> dataList<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>key<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">getParentKey</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>key<span class="token punctuation">,</span> gData<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">,</span> i<span class="token punctuation">,</span> self<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> item <span class="token operator">&amp;&amp;</span> self<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">===</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
expandedKeys<span class="token punctuation">,</span>
searchValue<span class="token punctuation">:</span> value<span class="token punctuation">,</span>
autoExpandParent<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> <span class="token punctuation">{</span> searchValue<span class="token punctuation">,</span> expandedKeys<span class="token punctuation">,</span> autoExpandParent <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">;</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> data <span class="token operator">=</span><span class="token operator">></span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> index <span class="token operator">=</span> item<span class="token punctuation">.</span>key<span class="token punctuation">.</span><span class="token function">search</span><span class="token punctuation">(</span>searchValue<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> beforeStr <span class="token operator">=</span> item<span class="token punctuation">.</span>key<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> index<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> afterStr <span class="token operator">=</span> item<span class="token punctuation">.</span>key<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span>index <span class="token operator">+</span> searchValue<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> title <span class="token operator">=</span> index <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span> <span class="token operator">?</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>
<span class="token punctuation">{</span>beforeStr<span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">style</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">{</span> color<span class="token punctuation">:</span> <span class="token string">'#f50'</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></span><span class="token punctuation">></span></span><span class="token punctuation">{</span>searchValue<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
<span class="token punctuation">{</span>afterStr<span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>title<span class="token punctuation">}</span></span><span class="token punctuation">></span></span>
<span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>title<span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Search</span> <span class="token attr-name">style</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">{</span> width<span class="token punctuation">:</span> <span class="token number">300</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></span> <span class="token attr-name">placeholder</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Search<span class="token punctuation">"</span></span> <span class="token attr-name">onChange</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onChange<span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span>
<span class="token attr-name">onExpand</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onExpand<span class="token punctuation">}</span></span>
<span class="token attr-name">expandedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>expandedKeys<span class="token punctuation">}</span></span>
<span class="token attr-name">autoExpandParent</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>autoExpandParent<span class="token punctuation">}</span></span>
<span class="token punctuation">></span></span>
<span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>gData<span class="token punctuation">)</span><span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
ReactDOM<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>SearchTree</span> <span class="token punctuation">/></span></span><span class="token punctuation">,</span> mountNode<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div></section></section></div><div style="padding-left:8px;padding-right:8px;" class="ant-col-12 code-boxes-col-2-1" data-reactid="497"><section class="code-box" id="components-tree-demo-basic-controlled" data-reactid="498"><section class="code-box-demo" data-reactid="499"><ul class="ant-tree" role="tree-node" unselectable="true" data-reactid="500"><li class="" data-reactid="501"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="502"></span><span class="ant-tree-checkbox ant-tree-checkbox-indeterminate" data-reactid="503"><span class="ant-tree-checkbox-inner" data-reactid="504"></span></span><a title="0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="505"><span class="ant-tree-title" data-reactid="506">0-0</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="507"><li class="" data-reactid="508"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="509"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked ant-tree-checkbox-disabled" data-reactid="510"><span class="ant-tree-checkbox-inner" data-reactid="511"></span></span><a title="0-0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="512"><span class="ant-tree-title" data-reactid="513">0-0-0</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="514"><li class="" data-reactid="515"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="516"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="517"><span class="ant-tree-checkbox-inner" data-reactid="518"></span></span><a title="0-0-0-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="519"><span class="ant-tree-title" data-reactid="520">0-0-0-0</span></a></li><li class="" data-reactid="521"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="522"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="523"><span class="ant-tree-checkbox-inner" data-reactid="524"></span></span><a title="0-0-0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="525"><span class="ant-tree-title" data-reactid="526">0-0-0-1</span></a></li><li class="" data-reactid="527"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="528"></span><span class="ant-tree-checkbox ant-tree-checkbox-checked" data-reactid="529"><span class="ant-tree-checkbox-inner" data-reactid="530"></span></span><a title="0-0-0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="531"><span class="ant-tree-title" data-reactid="532">0-0-0-2</span></a></li></ul></li><li class="" data-reactid="533"><span class="ant-tree-switcher ant-tree-noline_open" data-reactid="534"></span><span class="ant-tree-checkbox" data-reactid="535"><span class="ant-tree-checkbox-inner" data-reactid="536"></span></span><a title="0-0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open" data-reactid="537"><span class="ant-tree-title" data-reactid="538">0-0-1</span></a><ul class="ant-tree-child-tree ant-tree-child-tree-open" data-expanded="true" data-reactid="539"><li class="" data-reactid="540"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="541"></span><span class="ant-tree-checkbox" data-reactid="542"><span class="ant-tree-checkbox-inner" data-reactid="543"></span></span><a title="0-0-1-0" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="544"><span class="ant-tree-title" data-reactid="545">0-0-1-0</span></a></li><li class="" data-reactid="546"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="547"></span><span class="ant-tree-checkbox" data-reactid="548"><span class="ant-tree-checkbox-inner" data-reactid="549"></span></span><a title="0-0-1-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="550"><span class="ant-tree-title" data-reactid="551">0-0-1-1</span></a></li><li class="" data-reactid="552"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="553"></span><span class="ant-tree-checkbox" data-reactid="554"><span class="ant-tree-checkbox-inner" data-reactid="555"></span></span><a title="0-0-1-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="556"><span class="ant-tree-title" data-reactid="557">0-0-1-2</span></a></li></ul></li><li class="" data-reactid="558"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="559"></span><span class="ant-tree-checkbox" data-reactid="560"><span class="ant-tree-checkbox-inner" data-reactid="561"></span></span><a title="0-0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="562"><span class="ant-tree-title" data-reactid="563">0-0-2</span></a></li></ul></li><li class="" data-reactid="564"><span class="ant-tree-switcher ant-tree-noline_close" data-reactid="565"></span><span class="ant-tree-checkbox" data-reactid="566"><span class="ant-tree-checkbox-inner" data-reactid="567"></span></span><a title="0-1" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close" data-reactid="568"><span class="ant-tree-title" data-reactid="569">0-1</span></a><!-- react-empty: 570 --></li><li class="" data-reactid="571"><span class="ant-tree-switcher ant-tree-switcher-noop ant-tree-noline_docu" data-reactid="572"></span><span class="ant-tree-checkbox" data-reactid="573"><span class="ant-tree-checkbox-inner" data-reactid="574"></span></span><a title="0-2" class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal" data-reactid="575"><span class="ant-tree-title" data-reactid="576">0-2</span></a></li></ul></section><section class="code-box-meta markdown" data-reactid="577"><div class="code-box-title" data-reactid="578"><a href="#components-tree-demo-basic-controlled" data-reactid="579">basic controlled example</a><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/demo/basic-controlled.md" data-reactid="580"><i class="anticon anticon-edit" data-reactid="581"></i></a></div><div data-reactid="582"><p data-reactid="583"><!-- react-text: 584 -->basic controlled example<!-- /react-text --></p></div><i title="Show Code" class="anticon anticon-down-circle-o collapse" data-reactid="585"></i></section><section class="highlight-wrapper" data-reactid="586"><div class="highlight" data-reactid="587"><i class="anticon anticon-copy code-box-code-copy" data-reactid="588"></i><pre class="language-jsx" data-reactid="589"><code data-reactid="590"><span class="token keyword">import</span> <span class="token punctuation">{</span> Tree <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'antd'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> TreeNode <span class="token operator">=</span> Tree<span class="token punctuation">.</span>TreeNode<span class="token punctuation">;</span>
<span class="token keyword">const</span> x <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> y <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> z <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> gData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> generateData <span class="token operator">=</span> <span class="token punctuation">(</span>_level<span class="token punctuation">,</span> _preKey<span class="token punctuation">,</span> _tns<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> preKey <span class="token operator">=</span> _preKey <span class="token operator">||</span> <span class="token string">'0'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> tns <span class="token operator">=</span> _tns <span class="token operator">||</span> gData<span class="token punctuation">;</span>
<span class="token keyword">const</span> children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> x<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> key <span class="token operator">=</span> <span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>preKey<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">;</span>
tns<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> title<span class="token punctuation">:</span> key<span class="token punctuation">,</span> key <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> y<span class="token punctuation">)</span> <span class="token punctuation">{</span>
children<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>_level <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> tns<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">const</span> level <span class="token operator">=</span> _level <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>
children<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> index<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token function">generateData</span><span class="token punctuation">(</span>level<span class="token punctuation">,</span> key<span class="token punctuation">,</span> tns<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">generateData</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">Demo</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span>
state <span class="token operator">=</span> <span class="token punctuation">{</span>
expandedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'0-0-0'</span><span class="token punctuation">,</span> <span class="token string">'0-0-1'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
autoExpandParent<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
checkedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'0-0-0'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
selectedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
onExpand <span class="token operator">=</span> <span class="token punctuation">(</span>expandedKeys<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'onExpand'</span><span class="token punctuation">,</span> arguments<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">// if not set autoExpandParent to false, if children expanded, parent can not collapse.</span>
<span class="token comment" spellcheck="true">// or, you can remove all expanded children keys.</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
expandedKeys<span class="token punctuation">,</span>
autoExpandParent<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onCheck <span class="token operator">=</span> <span class="token punctuation">(</span>checkedKeys<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
checkedKeys<span class="token punctuation">,</span>
selectedKeys<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'0-3'</span><span class="token punctuation">,</span> <span class="token string">'0-4'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onSelect <span class="token operator">=</span> <span class="token punctuation">(</span>selectedKeys<span class="token punctuation">,</span> info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'onSelect'</span><span class="token punctuation">,</span> info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span> selectedKeys <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> data <span class="token operator">=</span><span class="token operator">></span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">disableCheckbox</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key <span class="token operator">===</span> <span class="token string">'0-0-0'</span><span class="token punctuation">}</span></span><span class="token punctuation">></span></span>
<span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span>
<span class="token attr-name">checkable</span>
<span class="token attr-name">onExpand</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onExpand<span class="token punctuation">}</span></span> <span class="token attr-name">expandedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>expandedKeys<span class="token punctuation">}</span></span>
<span class="token attr-name">autoExpandParent</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>autoExpandParent<span class="token punctuation">}</span></span>
<span class="token attr-name">onCheck</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onCheck<span class="token punctuation">}</span></span> <span class="token attr-name">checkedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>checkedKeys<span class="token punctuation">}</span></span>
<span class="token attr-name">onSelect</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onSelect<span class="token punctuation">}</span></span> <span class="token attr-name">selectedKeys</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>selectedKeys<span class="token punctuation">}</span></span>
<span class="token punctuation">></span></span>
<span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>gData<span class="token punctuation">)</span><span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
ReactDOM<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Demo</span> <span class="token punctuation">/></span></span><span class="token punctuation">,</span> mountNode<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div></section></section><section class="code-box" id="components-tree-demo-dynamic" data-reactid="591"><section class="code-box-demo" data-reactid="592"><ul class="ant-tree" role="tree-node" unselectable="true" data-reactid="593"></ul></section><section class="code-box-meta markdown" data-reactid="594"><div class="code-box-title" data-reactid="595"><a href="#components-tree-demo-dynamic" data-reactid="596">load data asynchronously</a><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/components/tree/demo/dynamic.md" data-reactid="597"><i class="anticon anticon-edit" data-reactid="598"></i></a></div><div data-reactid="599"><p data-reactid="600"><!-- react-text: 601 -->To load data asynchronously when click to expand a treeNode.<!-- /react-text --></p></div><i title="Show Code" class="anticon anticon-down-circle-o collapse" data-reactid="602"></i></section><section class="highlight-wrapper" data-reactid="603"><div class="highlight" data-reactid="604"><i class="anticon anticon-copy code-box-code-copy" data-reactid="605"></i><pre class="language-jsx" data-reactid="606"><code data-reactid="607"><span class="token keyword">import</span> <span class="token punctuation">{</span> Tree <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'antd'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> TreeNode <span class="token operator">=</span> Tree<span class="token punctuation">.</span>TreeNode<span class="token punctuation">;</span>
<span class="token keyword">function</span> <span class="token function">generateTreeNodes</span><span class="token punctuation">(</span>treeNode<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> key <span class="token operator">=</span> treeNode<span class="token punctuation">.</span>props<span class="token punctuation">.</span>eventKey<span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">3</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
arr<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token template-string"><span class="token string">`leaf </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>key<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">,</span> key<span class="token punctuation">:</span> <span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>key<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> arr<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">setLeaf</span><span class="token punctuation">(</span>treeData<span class="token punctuation">,</span> curKey<span class="token punctuation">,</span> level<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> loopLeaf <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">,</span> lev<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> l <span class="token operator">=</span> lev <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>
data<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>key<span class="token punctuation">.</span>length <span class="token operator">></span> curKey<span class="token punctuation">.</span>length<span class="token punctuation">)</span> <span class="token operator">?</span> item<span class="token punctuation">.</span>key<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>curKey<span class="token punctuation">)</span> <span class="token operator">!==</span> <span class="token number">0</span> <span class="token punctuation">:</span>
curKey<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>key<span class="token punctuation">)</span> <span class="token operator">!==</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">loopLeaf</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">,</span> l<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>l <span class="token operator">&lt;</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
item<span class="token punctuation">.</span>isLeaf <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">loopLeaf</span><span class="token punctuation">(</span>treeData<span class="token punctuation">,</span> level <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">getNewTreeData</span><span class="token punctuation">(</span>treeData<span class="token punctuation">,</span> curKey<span class="token punctuation">,</span> child<span class="token punctuation">,</span> level<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> <span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>level <span class="token operator">&lt;</span> <span class="token number">1</span> <span class="token operator">||</span> curKey<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">3</span> <span class="token operator">></span> level <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token punctuation">;</span>
data<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>curKey<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>key<span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
item<span class="token punctuation">.</span>children <span class="token operator">=</span> child<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token function">loop</span><span class="token punctuation">(</span>treeData<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">setLeaf</span><span class="token punctuation">(</span>treeData<span class="token punctuation">,</span> curKey<span class="token punctuation">,</span> level<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">class</span> <span class="token class-name">Demo</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span>
state <span class="token operator">=</span> <span class="token punctuation">{</span>
treeData<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
<span class="token function">componentDidMount</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
treeData<span class="token punctuation">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'pNode 01'</span><span class="token punctuation">,</span> key<span class="token punctuation">:</span> <span class="token string">'0-0'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'pNode 02'</span><span class="token punctuation">,</span> key<span class="token punctuation">:</span> <span class="token string">'0-1'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'pNode 03'</span><span class="token punctuation">,</span> key<span class="token punctuation">:</span> <span class="token string">'0-2'</span><span class="token punctuation">,</span> isLeaf<span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onSelect <span class="token operator">=</span> <span class="token punctuation">(</span>info<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'selected'</span><span class="token punctuation">,</span> info<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
onLoadData <span class="token operator">=</span> <span class="token punctuation">(</span>treeNode<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token punctuation">(</span>resolve<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> treeData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>treeData<span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token function">getNewTreeData</span><span class="token punctuation">(</span>treeData<span class="token punctuation">,</span> treeNode<span class="token punctuation">.</span>props<span class="token punctuation">.</span>eventKey<span class="token punctuation">,</span> <span class="token function">generateTreeNodes</span><span class="token punctuation">(</span>treeNode<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span> treeData <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> loop <span class="token operator">=</span> data <span class="token operator">=</span><span class="token operator">></span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span><span class="token punctuation">></span></span><span class="token punctuation">{</span><span class="token function">loop</span><span class="token punctuation">(</span>item<span class="token punctuation">.</span>children<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>TreeNode</span><span class="token punctuation">></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token attr-name">title</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>name<span class="token punctuation">}</span></span> <span class="token attr-name">key</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key<span class="token punctuation">}</span></span> <span class="token attr-name">isLeaf</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>isLeaf<span class="token punctuation">}</span></span> <span class="token attr-name">disabled</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span>item<span class="token punctuation">.</span>key <span class="token operator">===</span> <span class="token string">'0-0-0'</span><span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> treeNodes <span class="token operator">=</span> <span class="token function">loop</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>treeData<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token punctuation">(</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span> <span class="token attr-name">onSelect</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onSelect<span class="token punctuation">}</span></span> <span class="token attr-name">loadData</span><span class="token script language-javascript"><span class="token punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>onLoadData<span class="token punctuation">}</span></span><span class="token punctuation">></span></span>
<span class="token punctuation">{</span>treeNodes<span class="token punctuation">}</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
ReactDOM<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Demo</span> <span class="token punctuation">/></span></span><span class="token punctuation">,</span> mountNode<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div></section></section></div></div><section class="markdown api-container" data-reactid="608"><h2 id="API" data-reactid="609"><span data-reactid="610"><!-- react-text: 611 -->API<!-- /react-text --></span><a href="#API" class="anchor" data-reactid="612">#</a></h2><h3 id="Tree-props" data-reactid="613"><span data-reactid="614"><!-- react-text: 615 -->Tree props<!-- /react-text --></span><a href="#Tree-props" class="anchor" data-reactid="616">#</a></h3><table data-reactid="617"><thead data-reactid="618"><tr data-reactid="619"><th data-reactid="620"><!-- react-text: 621 -->Property<!-- /react-text --></th><th data-reactid="622"><!-- react-text: 623 -->Description<!-- /react-text --></th><th data-reactid="624"><!-- react-text: 625 -->Type<!-- /react-text --></th><th data-reactid="626"><!-- react-text: 627 -->Default<!-- /react-text --></th></tr></thead><tbody data-reactid="628"><tr data-reactid="629"><td data-reactid="630"><!-- react-text: 631 -->multiple<!-- /react-text --></td><td data-reactid="632"><!-- react-text: 633 -->Whether allow to select multiple treeNodes<!-- /react-text --></td><td data-reactid="634"><!-- react-text: 635 -->boolean<!-- /react-text --></td><td data-reactid="636"><!-- react-text: 637 -->false<!-- /react-text --></td></tr><tr data-reactid="638"><td data-reactid="639"><!-- react-text: 640 -->checkable<!-- /react-text --></td><td data-reactid="641"><!-- react-text: 642 -->Whether support add Checkbox before treeNode<!-- /react-text --></td><td data-reactid="643"><!-- react-text: 644 -->boolean<!-- /react-text --></td><td data-reactid="645"><!-- react-text: 646 -->false<!-- /react-text --></td></tr><tr data-reactid="647"><td data-reactid="648"><!-- react-text: 649 -->defaultExpandAll<!-- /react-text --></td><td data-reactid="650"><!-- react-text: 651 -->Whether default to expand all treeNodes<!-- /react-text --></td><td data-reactid="652"><!-- react-text: 653 -->boolean<!-- /react-text --></td><td data-reactid="654"><!-- react-text: 655 -->false<!-- /react-text --></td></tr><tr data-reactid="656"><td data-reactid="657"><!-- react-text: 658 -->defaultExpandedKeys<!-- /react-text --></td><td data-reactid="659"><!-- react-text: 660 -->Specify keys of default expanded treeNodes<!-- /react-text --></td><td data-reactid="661"><!-- react-text: 662 -->string[]<!-- /react-text --></td><td data-reactid="663"><!-- react-text: 664 -->[]<!-- /react-text --></td></tr><tr data-reactid="665"><td data-reactid="666"><!-- react-text: 667 -->expandedKeys<!-- /react-text --></td><td data-reactid="668"><!-- react-text: 669 -->(controlled) Specifies keys of expanded treeNodes<!-- /react-text --></td><td data-reactid="670"><!-- react-text: 671 -->string[]<!-- /react-text --></td><td data-reactid="672"><!-- react-text: 673 -->[]<!-- /react-text --></td></tr><tr data-reactid="674"><td data-reactid="675"><!-- react-text: 676 -->autoExpandParent<!-- /react-text --></td><td data-reactid="677"><!-- react-text: 678 -->Whether to automatically expand a parent treeNode<!-- /react-text --></td><td data-reactid="679"><!-- react-text: 680 -->boolean<!-- /react-text --></td><td data-reactid="681"><!-- react-text: 682 -->true<!-- /react-text --></td></tr><tr data-reactid="683"><td data-reactid="684"><!-- react-text: 685 -->defaultCheckedKeys<!-- /react-text --></td><td data-reactid="686"><!-- react-text: 687 -->Specifies keys of default checked treeNodes<!-- /react-text --></td><td data-reactid="688"><!-- react-text: 689 -->string[]<!-- /react-text --></td><td data-reactid="690"><!-- react-text: 691 -->[]<!-- /react-text --></td></tr><tr data-reactid="692"><td data-reactid="693"><!-- react-text: 694 -->checkedKeys<!-- /react-text --></td><td data-reactid="695"><!-- react-text: 696 -->(controlled) Specifies keys of checked treeNodesPS When specifies a key of treeNode which is a parent treeNode, all children treeNodes of its will be checked; And vice versa, when specifies a key of treeNode which is a child treeNode, its parent treeNode will also be checked. When <!-- /react-text --><code data-reactid="697"><!-- react-text: 698 -->checkable<!-- /react-text --></code><!-- react-text: 699 --> and <!-- /react-text --><code data-reactid="700"><!-- react-text: 701 -->checkStrictly<!-- /react-text --></code><!-- react-text: 702 --> is true, it&#x27;a object has <!-- /react-text --><code data-reactid="703"><!-- react-text: 704 -->checked<!-- /react-text --></code><!-- react-text: 705 --> and <!-- /react-text --><code data-reactid="706"><!-- react-text: 707 -->halfChecked<!-- /react-text --></code><!-- react-text: 708 --> property, and no matter child treeNode or parent treeNode is checked, they won&#x27;t impact on eachother.<!-- /react-text --></td><td data-reactid="709"><!-- react-text: 710 -->string[] <!-- /react-text --><!-- react-text: 711 -->|<!-- /react-text --><!-- react-text: 712 --> {checked: string[], halfChecked: string[]}<!-- /react-text --></td><td data-reactid="713"><!-- react-text: 714 -->[]<!-- /react-text --></td></tr><tr data-reactid="715"><td data-reactid="716"><!-- react-text: 717 -->checkStrictly<!-- /react-text --></td><td data-reactid="718"><!-- react-text: 719 -->Check treeNode precisely, parent treeNode and children treeNodes are not associated<!-- /react-text --></td><td data-reactid="720"><!-- react-text: 721 -->boolean<!-- /react-text --></td><td data-reactid="722"><!-- react-text: 723 -->false<!-- /react-text --></td></tr><tr data-reactid="724"><td data-reactid="725"><!-- react-text: 726 -->defaultSelectedKeys<!-- /react-text --></td><td data-reactid="727"><!-- react-text: 728 -->Specifies keys of default selected treeNodes<!-- /react-text --></td><td data-reactid="729"><!-- react-text: 730 -->string[]<!-- /react-text --></td><td data-reactid="731"><!-- react-text: 732 -->[]<!-- /react-text --></td></tr><tr data-reactid="733"><td data-reactid="734"><!-- react-text: 735 -->selectedKeys<!-- /react-text --></td><td data-reactid="736"><!-- react-text: 737 -->(controlled) Specifies keys of selected treeNode<!-- /react-text --></td><td data-reactid="738"><!-- react-text: 739 -->string[]<!-- /react-text --></td><td data-reactid="740"><!-- react-text: 741 -->-<!-- /react-text --></td></tr><tr data-reactid="742"><td data-reactid="743"><!-- react-text: 744 -->onExpand<!-- /react-text --></td><td data-reactid="745"><!-- react-text: 746 -->Defines a function will be called when expand or collapse a treeNode<!-- /react-text --></td><td data-reactid="747"><!-- react-text: 748 -->function(expandedKeys, {expanded: bool, node})<!-- /react-text --></td><td data-reactid="749"><!-- react-text: 750 -->-<!-- /react-text --></td></tr><tr data-reactid="751"><td data-reactid="752"><!-- react-text: 753 -->onCheck<!-- /react-text --></td><td data-reactid="754"><!-- react-text: 755 -->Defines a function will be called when the onCheck event occurs<!-- /react-text --></td><td data-reactid="756"><!-- react-text: 757 -->function(checkedKeys, e:{checked: bool, checkedNodes, node, event})<!-- /react-text --></td><td data-reactid="758"><!-- react-text: 759 -->-<!-- /react-text --></td></tr><tr data-reactid="760"><td data-reactid="761"><!-- react-text: 762 -->onSelect<!-- /react-text --></td><td data-reactid="763"><!-- react-text: 764 -->The callback will be invoked when the user clicks a treeNode<!-- /react-text --></td><td data-reactid="765"><!-- react-text: 766 -->function(selectedKeys, e:{selected: bool, selectedNodes, node, event})<!-- /react-text --></td><td data-reactid="767"><!-- react-text: 768 -->-<!-- /react-text --></td></tr><tr data-reactid="769"><td data-reactid="770"><!-- react-text: 771 -->filterTreeNode<!-- /react-text --></td><td data-reactid="772"><!-- react-text: 773 -->Defines a function to filter treeNodeshighlight),when return true, corresponding treeNode will be highlight<!-- /react-text --></td><td data-reactid="774"><!-- react-text: 775 -->function(node)<!-- /react-text --></td><td data-reactid="776"><!-- react-text: 777 -->-<!-- /react-text --></td></tr><tr data-reactid="778"><td data-reactid="779"><!-- react-text: 780 -->loadData<!-- /react-text --></td><td data-reactid="781"><!-- react-text: 782 -->load data asynchronously<!-- /react-text --></td><td data-reactid="783"><!-- react-text: 784 -->function(node)<!-- /react-text --></td><td data-reactid="785"><!-- react-text: 786 -->-<!-- /react-text --></td></tr><tr data-reactid="787"><td data-reactid="788"><!-- react-text: 789 -->onRightClick<!-- /react-text --></td><td data-reactid="790"><!-- react-text: 791 -->The call back will be invoked when the user right clicks a treeNode<!-- /react-text --></td><td data-reactid="792"><!-- react-text: 793 -->function({event, node})<!-- /react-text --></td><td data-reactid="794"><!-- react-text: 795 -->-<!-- /react-text --></td></tr><tr data-reactid="796"><td data-reactid="797"><!-- react-text: 798 -->draggable<!-- /react-text --></td><td data-reactid="799"><!-- react-text: 800 -->Specifies whether this Tree is draggableIE&gt;8<!-- /react-text --></td><td data-reactid="801"><!-- react-text: 802 -->boolean<!-- /react-text --></td><td data-reactid="803"><!-- react-text: 804 -->false<!-- /react-text --></td></tr><tr data-reactid="805"><td data-reactid="806"><!-- react-text: 807 -->onDragStart<!-- /react-text --></td><td data-reactid="808"><!-- react-text: 809 -->Defines a function will be called when the onDragStart event occurs<!-- /react-text --></td><td data-reactid="810"><!-- react-text: 811 -->function({event, node})<!-- /react-text --></td><td data-reactid="812"><!-- react-text: 813 -->-<!-- /react-text --></td></tr><tr data-reactid="814"><td data-reactid="815"><!-- react-text: 816 -->onDragEnter<!-- /react-text --></td><td data-reactid="817"><!-- react-text: 818 -->Defines a function will be called when the onDragEnter event occurs<!-- /react-text --></td><td data-reactid="819"><!-- react-text: 820 -->function({event, node, expandedKeys})<!-- /react-text --></td><td data-reactid="821"><!-- react-text: 822 -->-<!-- /react-text --></td></tr><tr data-reactid="823"><td data-reactid="824"><!-- react-text: 825 -->onDragOver<!-- /react-text --></td><td data-reactid="826"><!-- react-text: 827 -->Defines a function will be called when the onDragOver event occurs<!-- /react-text --></td><td data-reactid="828"><!-- react-text: 829 -->function({event, node})<!-- /react-text --></td><td data-reactid="830"><!-- react-text: 831 -->-<!-- /react-text --></td></tr><tr data-reactid="832"><td data-reactid="833"><!-- react-text: 834 -->onDragLeave<!-- /react-text --></td><td data-reactid="835"><!-- react-text: 836 -->Defines a function will be called when the onDragLeave event occurs<!-- /react-text --></td><td data-reactid="837"><!-- react-text: 838 -->function({event, node})<!-- /react-text --></td><td data-reactid="839"><!-- react-text: 840 -->-<!-- /react-text --></td></tr><tr data-reactid="841"><td data-reactid="842"><!-- react-text: 843 -->onDragEnd<!-- /react-text --></td><td data-reactid="844"><!-- react-text: 845 -->Defines a function will be called when the onDragEnd event occurs<!-- /react-text --></td><td data-reactid="846"><!-- react-text: 847 -->function({event, node})<!-- /react-text --></td><td data-reactid="848"><!-- react-text: 849 -->-<!-- /react-text --></td></tr><tr data-reactid="850"><td data-reactid="851"><!-- react-text: 852 -->onDrop<!-- /react-text --></td><td data-reactid="853"><!-- react-text: 854 -->Defines a function will be called when the onDrop event occurs<!-- /react-text --></td><td data-reactid="855"><!-- react-text: 856 -->function({event, node, dragNode, dragNodesKeys})<!-- /react-text --></td><td data-reactid="857"><!-- react-text: 858 -->-<!-- /react-text --></td></tr></tbody></table><h3 id="TreeNode-props" data-reactid="859"><span data-reactid="860"><!-- react-text: 861 -->TreeNode props<!-- /react-text --></span><a href="#TreeNode-props" class="anchor" data-reactid="862">#</a></h3><table data-reactid="863"><thead data-reactid="864"><tr data-reactid="865"><th data-reactid="866"><!-- react-text: 867 -->Property<!-- /react-text --></th><th data-reactid="868"><!-- react-text: 869 -->Description<!-- /react-text --></th><th data-reactid="870"><!-- react-text: 871 -->Type<!-- /react-text --></th><th data-reactid="872"><!-- react-text: 873 -->Default<!-- /react-text --></th></tr></thead><tbody data-reactid="874"><tr data-reactid="875"><td data-reactid="876"><!-- react-text: 877 -->disabled<!-- /react-text --></td><td data-reactid="878"><!-- react-text: 879 -->whether disabled the treeNode<!-- /react-text --></td><td data-reactid="880"><!-- react-text: 881 -->boolean<!-- /react-text --></td><td data-reactid="882"><!-- react-text: 883 -->false<!-- /react-text --></td></tr><tr data-reactid="884"><td data-reactid="885"><!-- react-text: 886 -->disableCheckbox<!-- /react-text --></td><td data-reactid="887"><!-- react-text: 888 -->whether disable the checkbox of treeNode<!-- /react-text --></td><td data-reactid="889"><!-- react-text: 890 -->boolean<!-- /react-text --></td><td data-reactid="891"><!-- react-text: 892 -->false<!-- /react-text --></td></tr><tr data-reactid="893"><td data-reactid="894"><!-- react-text: 895 -->title<!-- /react-text --></td><td data-reactid="896"><!-- react-text: 897 -->title<!-- /react-text --></td><td data-reactid="898"><!-- react-text: 899 -->string<!-- /react-text --><!-- react-text: 900 -->|<!-- /react-text --><!-- react-text: 901 -->ReactNode<!-- /react-text --></td><td data-reactid="902"><!-- react-text: 903 -->&#x27;---&#x27;<!-- /react-text --></td></tr><tr data-reactid="904"><td data-reactid="905"><!-- react-text: 906 -->key<!-- /react-text --></td><td data-reactid="907"><!-- react-text: 908 -->it&#x27;s used with (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. P.S.: it must be unique in all of treeNodes of the tree!<!-- /react-text --></td><td data-reactid="909"><!-- react-text: 910 -->string<!-- /react-text --></td><td data-reactid="911"><!-- react-text: 912 -->internal calculated position of treeNode<!-- /react-text --></td></tr><tr data-reactid="913"><td data-reactid="914"><!-- react-text: 915 -->isLeaf<!-- /react-text --></td><td data-reactid="916"><!-- react-text: 917 -->whether it&#x27;s leaf node<!-- /react-text --></td><td data-reactid="918"><!-- react-text: 919 -->boolean<!-- /react-text --></td><td data-reactid="920"><!-- react-text: 921 -->false<!-- /react-text --></td></tr></tbody></table><h2 id="Note" data-reactid="922"><span data-reactid="923"><!-- react-text: 924 -->Note<!-- /react-text --></span><a href="#Note" class="anchor" data-reactid="925">#</a></h2><p data-reactid="926"><!-- react-text: 927 -->The number of treeNodes can be very large, but when enable <!-- /react-text --><code data-reactid="928"><!-- react-text: 929 -->checkable<!-- /react-text --></code><!-- react-text: 930 -->,
it will spend more computing time, so we cache some calculations (e.g. <!-- /react-text --><code data-reactid="931"><!-- react-text: 932 -->this.treeNodesStates<!-- /react-text --></code><!-- react-text: 933 -->),
to avoid double computing. But, this bring some restrictions,
<!-- /react-text --><strong data-reactid="934"><!-- react-text: 935 -->when you load treeNodes asynchronously, you should render tree like this<!-- /react-text --></strong><!-- react-text: 936 --><!-- /react-text --></p><pre class="language-jsx" data-reactid="937"><code data-reactid="938"><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>treeData<span class="token punctuation">.</span>length
<span class="token operator">?</span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Tree</span><span class="token punctuation">></span></span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>treeData<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data <span class="token operator">=</span><span class="token operator">></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>TreeNode</span> <span class="token punctuation">/></span></span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>Tree</span><span class="token punctuation">></span></span>
<span class="token punctuation">:</span> <span class="token string">'loading tree'</span><span class="token punctuation">}</span></code></pre></section></article></div></div><div class="ant-row" data-reactid="939"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-md-offset-6 ant-col-lg-20 ant-col-lg-offset-4" data-reactid="940"><section class="prev-next-nav" data-reactid="941"><a class="prev-page" href="/components/timeline/" data-reactid="942"><span data-reactid="943">Timeline</span><span class="chinese" data-reactid="944"></span></a><a class="next-page" href="/components/alert/" data-reactid="945"><span data-reactid="946">Alert</span><span class="chinese" data-reactid="947"></span></a></section></div></div></div><footer id="footer" data-reactid="948"><ul data-reactid="949"><li data-reactid="950"><h2 data-reactid="951"><i class="anticon anticon-github" data-reactid="952"></i><!-- react-text: 953 --> GitHub<!-- /react-text --></h2><div data-reactid="954"><a target="_blank " href="https://github.com/ant-design/ant-design" data-reactid="955"><span data-reactid="956">Repository</span></a></div><div data-reactid="957"><a target="_blank " href="https://ant.design/docs/react/customize-theme" data-reactid="958"><span data-reactid="959">Customize Theme</span></a></div><div data-reactid="960"><a target="_blank " href="https://github.com/websemantics/awesome-ant-design" data-reactid="961"><span data-reactid="962">Awesome Ant Design</span></a></div></li><li data-reactid="963"><h2 data-reactid="964"><i class="anticon anticon-link" data-reactid="965"></i><!-- react-text: 966 --> <!-- /react-text --><span data-reactid="967">Links</span></h2><div data-reactid="968"><a href="http://mobile.ant.design" data-reactid="969">Ant Design Mobile</a><span data-reactid="970"> - </span><span data-reactid="971">Mobile UI</span></div><div data-reactid="972"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva" data-reactid="973">dva</a><!-- react-text: 974 --> - <!-- /react-text --><span data-reactid="975">Framework</span></div><div data-reactid="976"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva-cli" data-reactid="977">dva-cli</a><!-- react-text: 978 --> -<!-- /react-text --><span data-reactid="979">Developer Tools</span></div><div data-reactid="980"><a target="_blank" rel="noopener noreferrer" href="https://eggjs.org/" data-reactid="981">Egg</a><span data-reactid="982"> - </span><span data-reactid="983">Enterprise Node Framework</span></div><div data-reactid="984"><a target="_blank" rel="noopener noreferrer" href="https://antv.alipay.com/" data-reactid="985">AntV</a><span data-reactid="986"> - </span><span data-reactid="987">Data Visualization</span></div><div data-reactid="988"><a target="_blank" rel="noopener noreferrer" href="http://motion.ant.design" data-reactid="989">Ant Motion</a><span data-reactid="990"> - </span><span data-reactid="991">Motion Soluction</span></div><div data-reactid="992"><a target="_blank" rel="noopener noreferrer" href="http://library.ant.design/" data-reactid="993">AntD Library</a><span data-reactid="994"> - </span><span data-reactid="995">Axure library</span></div><div data-reactid="996"><a target="_blank" rel="noopener noreferrer" href="http://ux.ant.design" data-reactid="997">Ant UX</a><span data-reactid="998"> - </span><span data-reactid="999">Sitemap Template</span></div></li><li data-reactid="1000"><h2 data-reactid="1001"><i class="anticon anticon-customer-service" data-reactid="1002"></i><!-- react-text: 1003 --> <!-- /react-text --><span data-reactid="1004">Community</span></h2><div data-reactid="1005"><a href="/changelog" data-reactid="1006"><span data-reactid="1007">Change Log</span></a></div><div data-reactid="1008"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/wiki/FAQ" data-reactid="1009"><span data-reactid="1010">FAQ</span></a></div><div data-reactid="1011"><a target="_blank" rel="noopener noreferrer" href="https://gitter.im/ant-design/ant-design" data-reactid="1012"><span data-reactid="1013">Chat Room</span></a></div><div data-reactid="1014"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/issues/new" data-reactid="1015"><span data-reactid="1016">Bug Report</span></a></div><div data-reactid="1017"><a target="_blank" rel="noopener noreferrer" href="http://stackoverflow.com/questions/tagged/antd" data-reactid="1018"><span data-reactid="1019">StackOverflow</span></a></div><div data-reactid="1020"><a target="_blank" rel="noopener noreferrer" href="https://segmentfault.com/t/antd" data-reactid="1021"><span data-reactid="1022">SegmentFault</span></a></div></li><li data-reactid="1023"><h2 data-reactid="1024"><!-- react-text: 1025 -->Copyright © <!-- /react-text --><!-- react-text: 1026 -->2017<!-- /react-text --></h2><div data-reactid="1027"><span data-reactid="1028">Created by Ant UED</span></div><div data-reactid="1029"><!-- react-text: 1030 -->Built with <!-- /react-text --><a target="_blank" rel="noopener noreferrer" href="https://github.com/benjycui/bisheng" data-reactid="1031">BiSheng</a></div></li></ul></footer></div>
</div>
<script src="/common.js"></script>
<script src="/index.js"></script>
</body>
</html>