zoukankan      html  css  js  c++  java
  • 渲染一颗树(分别使用vue和react创建)

    写代码要思路清晰,一步一步来,首先从最简单的来,慢慢加入新东西,逐渐优化。本文只是简单渲染出一颗树,通过传树形结构数组。

    vue通过组件递归将数据渲染出一颗树,react则通过函数递归,

    数据结构:

     treeData:[
          {label:'1',key:'1',children:[{label:'1-1',key:'11'},{label:'1-2',key:'12'}]},
          {label:'2',key:'2',children:[{label:'2-1',key:'21'}]}
    ]
    

      

    渲染结果:

    代码也简单

    Vue(至少要两个组件才能看到效果)

    tree组件(被调用):

    <template>
        <div >
            <div>{{label}}</div>
            <vue-tree v-for="node in children" :label="node.label" :children="node.children"></vue-tree>
        </div>
    </template>
    
    <script>
    export default {
        name:'vue-tree',
        props:['label','children']
    }
    </script>

    home(调用tree)

    <template>
      <div>
        <vue-tree :label="treeData.label" :children="treeData"></vue-tree>
      </div>
    </template>
    
    <script>
    import VueTree from './VueTree';
    export default {
      name: 'Home',
      data () {
        return {
         treeData:[
          {label:'1',key:'1',children:[{label:'1-1',key:'11'},{label:'1-2',key:'12'}]},
          {label:'2',key:'2',children:[{label:'2-1',key:'21'}]}]
        }
      },
      components:{VueTree}
    }
    </script>
    

     

    react(核心):

    import React, { Component } from 'react';
    import logo from './logo.svg';
    import './App.css';
    const treeData=[
          {label:'1',key:'1',children:[{label:'1-1',key:'11'},{label:'1-2',key:'12'}]},
          {label:'2',key:'2',children:[{label:'2-1',key:'21'}]}]
    
    
    class App extends Component {
      constructor(props) {
    		super(props);
    		this.state = { };
                    this.buildTree=this.buildTree.bind(this);
      }
      buildTree(data){
        return data.map(item=>{
          if(item.children){
            return <div key={item.key}>{item.key}{this.buildTree(item.children)}</div>
          }
          return <div key={item.key}>{item.label}</div>
        })
      
      }
      render() {
        return (
          <div className="App">
            <header className="App-header">
              <img src={logo} className="App-logo" alt="logo" />
              <h1 className="App-title">Welcome to React</h1>
            </header>
           {this.buildTree(treeData)}
          </div>
        );
      }
    }
    
    export default App;
            
    

      下载地址:https://gitee.com/zhiming_2017/Components.git

  • 相关阅读:
    ASP.NET MVC 1.0 + spring.net 1.2.0.20288 + NHibernate 2.0.1.4000整合笔记(一)——准备工作
    OpenWRT 编译过程
    XNA 3D模型入门讲解(一)
    Windows Phone7 中实现主从视图
    MVVM之ViewModel
    XNA 三维入门讲解
    WF 4.0 之持久化操作二:Xml方式的存储
    Nhibernate下使用Oracle提示 “Could not create the driver from NHibernate.Driver.OracleDataClientDriver”
    Win8 :修改默认的初始屏幕背景
    Javascript中单引号和双引号引发的悲剧
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/9610613.html
Copyright © 2011-2022 走看看