【金典面试题】Vue与React实现Tree

简介: 【金典面试题】Vue与React实现Tree

实现vue Tree展示样式

1、 创建tree可循环的子组件(tree-child)

<template>
    <li>
        <span @click="toggle">
            <i v-if="hasChild" class="icon">{
  {open ? '-' : '+'}}</i>
            {
  { data.name }}
        </span>
        <ul v-show="open" v-if="hasChild">
            <tree-child v-for="(item, index) in data.children" :data="item" :key="index"></tree-child>
        </ul>
    </li>
</template>

<script>
export default {
    name: 'TreeChild',
    props: {
        data: {
            type: [Object, Array],
            required: true
        }
    },
    data() {
        return {
            open: false
        }
    },
    computed: {
        hasChild() {
            return this.data.children && this.data.children.length
        }
    },
    methods: {
        toggle() {
            if(this.hasChild) {
                this.open = !this.open
            }
        }
    }
}
</script>

2、赋值数据(tree)

<template>
    <div class="tree-menu">
        <ul v-for="item in data">
            <tree-child :data="item"></tree-child>
        </ul>
    </div>
</template>

<script>
import TreeChild from './tree-child'
export default {
    props: {
        data: {
            type: [Object, Array],
            required: true
        }
    },
    components: {
        TreeChild
    }
}
</script>

3、component引用

<template>
   <tree :data="treeData"></tree>
</template>

<script>
import Tree from './tree'
export default {
    components: {
        Tree
    },
    data() {
        return {
            treeData: [{
                'name': '人员管理',
                'children': [{
                    'name': '分组1',
                    'children': [{
                        'name': '人员1'
                    }, {
                        'name': '人员2'
                    }, {
                        'name': '人员3'
                    }]
                }, {
                    'name': '分组2'
                }, {
                    'name': '分组3'
                }]
            }, {
                'name': '基础档案',
            }, {
                'name': '送货管理'
            }]
        }
    },
}
</script>

React实现Tree

1、创建Tree

import React, {Component} from 'react';

export default class Tree extends Component {
    constructor(props) {
        super(props)
        this.state = {
            data: this.props.data || []
        }
    }

    markTreeChild(data) {
        let tree;
        if (Object.prototype.toString.call(data) == "[object Array]") {
            tree = data.map((item) => {
                let treeChild = (<li key={this.count++}>{item.text}</li>)
                if (item.children && item.children.length) {
                    treeChild = (<li key={this.count++}>
                        <span>{item.text}</span>
                        {this.markTreeChild(item.children)}
                    </li>)
                }
                return treeChild
            })
        }
        return (
            <ul>{tree}</ul>
        )
    }

    render() {
        this.count = 0
        return this.markNode(this.state.data)
    }
}

2、component

<Tree data={[{
    'name': '人员管理',
    'children': [{
        'name': '分组1',
        'children': [{
            'name': '人员1'
        }, {
            'name': '人员2'
        }, {
            'name': '人员3'
        }]
    }, {
        'name': '分组2'
    }, {
        'name': '分组3'
    }]
}, {
    'name': '基础档案',
}, {
    'name': '送货管理'
}]}/>
目录
相关文章
|
22天前
|
存储 缓存 JavaScript
如何优化React或Vue应用的性能
需要注意的是,性能优化是一个持续的过程,需要根据具体的应用场景和性能问题进行针对性的优化。同时,不同的项目和团队可能有不同的优化重点和方法,要结合实际情况灵活运用这些优化策略,以达到最佳的性能效果。
105 51
|
22天前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
31 1
|
23天前
|
JavaScript 前端开发 开发者
React和Vue有什么区别?
React 和 Vue 都有各自的优势和特点,开发者可以根据项目的需求、团队的技术背景以及个人的喜好来选择使用。无论是 React 还是 Vue,它们都在不断发展和完善,为前端开发提供了强大的支持。
47 2
|
23天前
|
JavaScript 前端开发 测试技术
React和Vue的性能对比如何?
需要注意的是,性能不仅仅取决于框架本身,还与开发者的代码质量、架构设计以及项目的优化程度等密切相关。因此,在评估性能时,应该综合考虑多个因素,而不是仅仅局限于框架之间的比较。
96 1
|
29天前
|
JavaScript 前端开发 算法
React 框架和 Vue 框架的区别是什么?
React框架和Vue框架都是目前非常流行的前端JavaScript框架,它们在很多方面存在区别
|
1月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
1月前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
25天前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
31 0
|
1月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】 React与Vue:前端框架的巅峰对决与选择策略
|
1月前
|
JavaScript 前端开发 数据管理
React和Vue的优缺点
【10月更文挑战第23天】React和Vue的优缺点
30 0