84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
在Tree元件拖曳的時候,想限制父節點不能拖曳到子節點這一層,意思是限制只能子節點往上拉。這個可以antd支援嗎?
ringa_lee
最終的渲染只在於資料是怎麼樣的,在資料的改變在於你自己的控制啊,允許不允許,不過是資料是否改變而已了。
例如下面的程式碼, 子节点 只能放到 第三个 下面,不能放到 第一个 下面(因為我的邏輯就是這樣的)。
子节点
第三个
第一个
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: '子节点', 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>) } }
最終的渲染只在於資料是怎麼樣的,在資料的改變在於你自己的控制啊,允許不允許,不過是資料是否改變而已了。
例如下面的程式碼,
子节点
只能放到第三个
下面,不能放到第一个
下面(因為我的邏輯就是這樣的)。