第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

基于Reactjs的ztree 組件開發(fā)

標(biāo)簽:
Node.js JavaScript React.JS
基于Reactjs的ztree 组件开发
开发目的

项目中经常会用到树形控件,而且数据量较大,通常会达到上万的数据量,之前用的jQuery ztree 可以很好的满足以上要求,而自己目前也没有能力造一个满足这样要求的轮子,所以还是延用之前的ztree,然后在其之上封装成react component形式。

开发过程

首先我们新建一个项目目录,这里我们采用webpack umd打包方式,使其可以用于amd,cmd和全局引用.
项目目录是这样滴~
图片描述

src 中ztree-for-react.js 是源码,经过webpack编译打包后的文件会保存到lib目录中

webpack 配置如下图所示:
图片描述

接下来我们编写核心代码:

import React,{Component} from 'react';
import $ from 'jquery';   //加载jQuery
import 'ztree';  //加载ztree
let ztreeIndex=0;
export default class ReactZtree extends Component{
  constructor(props){
    super(props);
  }
  componentDidMount(){
    this.renderZtreeDom();
  }
  componentDidUpdate(){
    this.renderZtreeDom();
  }
  componentWillUnmount(){
    this.ztreeObj.destory();
  }
  renderZtreeDom(){
    let ztreeObj = this.ztreeObj=$.fn.zTree.init(this.getTreeDom(),this.getTreeSetting(),this.props.nodes);
    return ztreeObj;
  }
  getTreeDom(){
    return $(this.refs.ztree);
  }
  getTreeSetting(){
    let props=this.props;
    return {
      treeId:props.treeId,
      treeObj:props.treeObj,
      async:props.async,
      callback:props.events,
      check:props.check,
      data:props.data,
      edit:props.edit,
      view:props.view
    }
  }
  getTreeObj(){
    return this.ztreeObj;
  }
  render(){
    return (
      <div className="ztree" ref="ztree" id={`ztree_${ztreeIndex++}`}>

      </div>
    )
  }
}

我们在componentDidMount 钩子函数中初始化ztree,利用getTreeSetting方法写入ztree的配置,将ztree的配置转换为React组件的props,当树节点或者配置更新时我们调用ztree distroy方法销毁ztree对象并且重新初始化ztree,这样就达到了当外部props属性改变是ztree可以自动刷新的效果,这样一个ztree组件就大功告成啦~

最后附上这个项目的github地址,喜欢的童鞋可以star或者fork,也非常欢迎提issues来帮忙进一步改进和完善这个组件。目前npm包也已经发布,有需要的同学可以使用npm安装:

npm install ztree-for-react
點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消