dva+antd完成tree

dva项目下完成tree的展示

参考antd文档 https://ant.design/components/tree-cn/

import { Tree } from 'antd';
import { Modal } from 'antd';
import React from 'react';
import { connect } from 'dva';
import axios from 'axios';
const TreeNode = Tree.TreeNode;
const confirm = Modal.confirm;



class AAAA extends React.Component {
    //遍历json绘制出tree结构
    mapData = (children) => {
        if (children && Array.isArray(children)) {
            return children.map((ele) => {
                if (ele.children && Array.isArray(ele.children)) {
                    return <TreeNode title={ele.name} key={ele.value} isLeaf={ele.isFile} url={ele.url}>
                        {this.mapData(ele.children)}
                    </TreeNode>
                } else {
                    return <TreeNode title={ele.name} key={ele.value} isLeaf={ele.isFile} url={ele.url}/>
                }
            })
        }
        return []
    }

	
	
//构造器加入data
constructor(props) {
    super(props);
    this.state = {
        data: [] //先空着
    }
}


//获取数据
componentDidMount() {
	 console.log("构造函数加载完成后,会加载componentWillMount(组件将要挂载)----2")
    axios.get('http://localhost:8000/api/tree')
      .then(res => {
        const data = res.data;
        this.setState({ data });
		 console.log( this.state.data)
      });
  }




	onSelect = (selectedKeys, info) => {
		console.log('selected', selectedKeys);
		//alert(selectedKeys[0])
		let isLeaf=info.node.props.isLeaf;
		if(isLeaf){
			let url=info.node.props.url;
			confirm({
				title: '确定下载脚本文件?',
				content: '确认框',
				okText:'确认',
				cancelText:'取消',
				onOk() {
				  alert("下载"+url)
				},
				onCancel() {
				  console.log('Cancel');
				},
			});						
		}
  }
  

    render() {
		var data = this.state.data; //记得定义
        let content = []
        let {name, children} = data
		console.log(data);
        if (name) {
            content.push(<TreeNode title={name} key="/">{this.mapData(children)}</TreeNode>)
        }
        return (
		  <Tree  showLine defaultExpandAll  onSelect={this.onSelect}    >
               {content}
            </Tree>
        );
    }
	
	  
}

export default connect()(AAAA)

请求接口 http://localhost:8000/api/tree可参考https://blog.csdn.net/yjaspire/article/details/90180226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值