前端项目实战叁佰肆拾壹react-admin和material ui-rc-tree demo

import { Paper } from '@mui/material';
import Tree from 'rc-tree';
import 'rc-tree/assets/index.css';
import React, { Key, useEffect, useState } from 'react';
import { Outlet } from 'react-router-dom';
import UseGetTree from '../../components/usegettree/usegettree';

const PlantModel = () => {

    return(
        <div style = {{display: 'flex', flexDirection: 'row', width: '100%'}}>
            <div style = {{width: '200px', marginRight: '10px'}}>
                <PlantTree />
            </div>
            <div>
                <Outlet/>
            </div>
            
        </div>
    )
}

interface ITreeData extends Record<string, any> {
    key: string;
    title: string;
    children?: ITreeData[];
}

const PlantTree = () => {
    const [treeData, setTreeData] = useState<ITreeData[]>([]);
    const [keys, setKeys] = useState<Key[]>([]);

    const {data} = UseGetTree('t_lps_plant', 't_lps_line');

    useEffect(() => {
        if(data !== undefined) {
            console.log('raw data is: ', data);
            let temp: ITreeData[] = [{key: '0', title: '工厂管理', children: new Array<ITreeData>()}];

            //向从数据库查询到的数据中添加Tree结构所需要的字段,key使用id,title使用name;
            data.forEach(it => {
                it['key'] = `${it.id}`;
                it['title'] = it.name;
                it.children && it.children.forEach((item: any)=>{
                    item['key'] = `${it.id}-${item.id}`;
                    item['title'] = item.name
                })
            });

            temp[0].children = data;
            setTreeData(temp);
        }
    }, [data]);

    const handleTreeItemSelect = (keys: Key[]) => {
        setKeys(keys);
        const key = keys[0];

        if(key === '0') {
        }
    }


    return(
        <Paper sx = {{height: '100vh'}}>
            <Tree
                treeData={treeData}
                selectable = {true}
                selectedKeys={keys}
                onSelect={handleTreeItemSelect}

            />
        </Paper>
    )
}
export default PlantModel;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值