Lorsque je fais glisser le composant Tree, je souhaite empêcher le n?ud parent d'être déplacé au niveau du n?ud enfant, ce qui signifie que seul le n?ud enfant peut être déplacé vers le haut. Cela peut-il être pris en charge par antd??
ringa_lee
Le rendu final dépend uniquement de l'apparence des données. La modification des données est sous votre propre contr?le. Qu'elle soit autorisée ou non, il s'agit simplement de savoir si les données changent.
Par exemple, le code suivant, 子節(jié)點
只能放到 第三個
下面,不能放到 第一個
ci-dessous (car c'est ma logique).
import * as React from 'react';
import {BaseComponent} from '../base';
import Tree from 'antd/lib/tree';
const TreeNode = Tree.TreeNode;
import 'antd/lib/tree/style/index.css';
export interface HeaderProps { }
export interface HeaderState { data: any }
export class Header extends BaseComponent<HeaderProps, HeaderState> {
state = {
data: [
{name: '第一個', key: 'a'},
{name: '第二個', key: 'b',
children: [
{name: '子節(jié)點', key: 'd'}
]},
{name: '第三個', key: 'c'}
]
};
constructor(props:HeaderProps) {
super(props);
}
onDragEnter(opt){
console.log(opt, 'x');
}
onDrop(opt){
const fromNode = opt.dragNode.props.eventKey;
const toNode = opt.node.props.eventKey;
if(toNode !== 'c'){ return }
this.state.data[2]['children'] = this.state.data[1]['children'];
this.state.data[1]['children'] = [];
this.setState({});
}
loop(data){
return data.map( d => {
if(d.children && d.children.length){
return <TreeNode key={d.key} title={d.name}>{this.loop(d.children)}</TreeNode>
} else {
return <TreeNode key={d.key} title={d.name}></TreeNode>
}
})
}
render() {
return (<p>
<Tree className="draggable-tree"
draggable
onDragEnter={this.onDragEnter.bind(this)}
onDrop={this.onDrop.bind(this)}>
{this.loop(this.state.data)}
</Tree>
</p>)
}
}