<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ReactJs實現樹形結構的數據顯示的組件的示例

        來源:懂視網 責編:小采 時間:2020-11-27 22:32:36
        文檔

        ReactJs實現樹形結構的數據顯示的組件的示例

        ReactJs實現樹形結構的數據顯示的組件的示例:本文介紹了ReactJs實現樹形結構的數據顯示的組件的示例,分享給大家,具體如下: 1、該組件樹形顯示數據 2、組件中數據的請求方式為fetch方式 3、點擊對應的數據前面的小三角,fetch請求改數據下對應的子數據,并展開該節點。 4、將該組件的js、le
        推薦度:
        導讀ReactJs實現樹形結構的數據顯示的組件的示例:本文介紹了ReactJs實現樹形結構的數據顯示的組件的示例,分享給大家,具體如下: 1、該組件樹形顯示數據 2、組件中數據的請求方式為fetch方式 3、點擊對應的數據前面的小三角,fetch請求改數據下對應的子數據,并展開該節點。 4、將該組件的js、le

        本文介紹了ReactJs實現樹形結構的數據顯示的組件的示例,分享給大家,具體如下:

        1、該組件樹形顯示數據

        2、組件中數據的請求方式為fetch方式

        3、點擊對應的數據前面的小三角,fetch請求改數據下對應的子數據,并展開該節點。

        4、將該組件的js、less文件放到kpiTree目錄下,在kpiTree目錄下創建images目錄將組件需要的圖片放入給目錄,在kpiTree目錄下創建json文件夾將該組件需要的json文件放入改文件夾中,組件便可正常運行。

        kpiTree.js文件

         /** 
         * Created by Administrator on 2017/3/20 0020. 
         */ 
        import React,{Component} from "react" 
        import "./kpiTree.less"; 
        export default class KpiTree extends Component{ 
         constructor(props){ 
         super(props); 
         this.state={ 
         } 
         this._handleSelect=this._handleSelect.bind(this); 
         this._handleSearch=this._handleSearch.bind(this); 
         this._handleReturn=this._handleReturn.bind(this); 
         } 
         _handleSearch=()=>{ 
         debugger 
         var _self=this; 
         var _inputValue=this.refs.ksearchInput.value;//搜索框輸入的關鍵字 
         var _main=this.refs.kpiTree; 
         _main.innerHTML=""; 
         var searchListUrl = '../src/kpiTree/json/searchListData.json'; 
         fetch(searchListUrl,{ 
         credentials:'same-origin', 
         async:false, 
         //method: 'POST', 
         method: 'GET', 
         mode:'cors',//跨域請求 
         headers: { 
         "Content-type": "application/x-www-form-urlencoded", 
         "User-Agent": " Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" 
         }, 
         }) 
         .then(function(res) { 
         console.log("Response succeeded?", JSON.stringify(res.ok)); 
         return res.json(); 
         }) 
         
         .then(function(data) { 
         debugger 
         _self._renderTreeNode(_main,data,0); 
         }) 
         .catch(function(e) { 
         console.log("fetch fail",e.toString()); 
         }); 
         } 
         _handleReturn=()=>{ 
         this.refs.ksearchInput.value="";//清空搜索輸入框 
         var _main=this.refs.kpiTree; 
         _main.innerHTML=""; 
         this._fetchTreeNodeData("",_main,0); 
         } 
         _handleSelect=()=>{ 
         debugger; 
         var _select=[]; 
         $(this.refs.kpiTree).find("input:checkbox").each(function() {//$('#kpiTree input:checkbox') 
         if ($(this)[0].pid!=undefined&&$(this)[0].checked ==true) { 
         var _selected_kpi={}; 
         _selected_kpi.kid=$(this)[0].parentNode.id.substring(4); 
         _selected_kpi.kname=$(this)[0].parentNode.children[1].innerHTML 
         _selected_kpi.pid=$(this)[0].parentNode.pid.substring(4); 
         _select.push(_selected_kpi); 
         } 
         }); 
         this.props.callbackParent(_select); 
         } 
         componentDidMount=()=>{ 
         var _main=this.refs.kpiTree; 
         this._fetchTreeNodeData("",_main,0); 
         } 
         _selectAllCheckBox=(parentNodeId,event)=>{ 
         var _items=$("#" + parentNodeId+" input") 
         for(var i=0;i<_items.length;i++){ 
         if (_items[i].pid!=undefined&&_items[i].pid==parentNodeId){ 
         _items[i].checked=event.currentTarget.checked; 
         } 
         } 
         } 
         _renderTreeNode=(nodeObj,treeData,paddingLeft)=>{ 
         var _self=this; 
         var hasAllSelectBox=false; 
         if(treeData.length>0){ 
         for(var i=0;i<treeData.length;i++){ 
         if(treeData[i].hasChild=="0"){ 
         hasAllSelectBox=true 
         } 
         } 
         var _node=treeData.map((data,index)=>{ 
         var _kname=data.kname; 
         var _div=document.createElement("div"); 
         _div.pid="node"+data.pid; 
         _div.id="node"+data.kid; 
         _div.style.paddingLeft=paddingLeft+"px"; 
         var _img=document.createElement("img"); 
         _img.src="https://www.gxlcms.com/src/kpiTree/images/hide.png"; 
         _img.className="knode-hide-show-icon"; 
         _img.onclick=_self._handleClick.bind(this,data.kid); 
         var _checkBox=document.createElement("input"); 
         _checkBox.type="checkbox" 
         _checkBox.pid="node"+data.pid; 
         var _span=document.createElement("span"); 
         _span.innerHTML=_kname; 
         var allCheckBoxDiv=null; 
         if(data.pid!="-1"&&index==0&&hasAllSelectBox==true){ 
         allCheckBoxDiv=document.createElement("div"); 
         allCheckBoxDiv.pid="node"+data.pid; 
         allCheckBoxDiv.style.paddingLeft=paddingLeft+"px"; 
         var _allCheckBox=document.createElement("input"); 
         _allCheckBox.type="checkbox"; 
         _allCheckBox.onchange=_self._selectAllCheckBox.bind(this,nodeObj.id); 
         var _allCheckBoxLabel=document.createElement("span"); 
         _allCheckBoxLabel.innerHTML="全選"; 
         allCheckBoxDiv.appendChild(_allCheckBox); 
         allCheckBoxDiv.appendChild(_allCheckBoxLabel); 
         } 
         if(data.hasChild=="1"){ 
         _div.appendChild(_img); 
         } 
         else if(data.hasChild=="0"){ 
         _div.appendChild(_checkBox); 
         } 
         _div.appendChild(_span); 
         if(allCheckBoxDiv){ 
         nodeObj.appendChild(allCheckBoxDiv) 
         } 
         nodeObj.appendChild(_div); 
         }) 
         
         } 
         } 
         _fetchTreeNodeData=(nodeId,nodeObj,paddingLeft)=>{ 
         debugger; 
         var _self=this; 
         var treeListUrl = '../src/kpiTree/json/treeListData'+nodeId+'.json'; 
         fetch(treeListUrl,{ 
         credentials:'same-origin', 
         async:false, 
         //method: 'POST', 
         method: 'GET', 
         mode:'cors',//跨域請求 
         headers: { 
         "Content-type": "application/x-www-form-urlencoded", 
         "User-Agent": " Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" 
         }, 
         }) 
         .then(function(res) { 
         console.log("Response succeeded?", JSON.stringify(res.ok)); 
         return res.json(); 
         }) 
         
         .then(function(data) { 
         debugger 
         _self._renderTreeNode(nodeObj,data,paddingLeft); 
         }) 
         .catch(function(e) { 
         console.log("fetch fail",e.toString()); 
         }); 
         
         } 
         _handleClick=(nodeId,event)=>{ 
         debugger; 
         var _clickImg=event.currentTarget 
         var currentNode=event.currentTarget.parentNode; 
         if(_clickImg.src.indexOf("hide")!=-1){ 
         _clickImg.src="https://www.gxlcms.com/src/kpiTree/images/show.png"; 
         if(currentNode.childNodes[3]!=null&¤tNode.childNodes[3]!=undefined){ 
         this._showOrHideNode(currentNode,1); 
         } 
         else { 
         this._fetchTreeNodeData(nodeId,currentNode,20); 
         } 
         } 
         else if(_clickImg.src.indexOf("show")!=-1){ 
         _clickImg.src="https://www.gxlcms.com/src/kpiTree/images/hide.png"; 
         this._showOrHideNode(currentNode,0); 
         } 
         } 
         _showOrHideNode=(pNode,isShow)=>{ 
         var _sub_nodes=pNode.childNodes; 
         for(var i=0;i<_sub_nodes.length;i++){ 
         if(_sub_nodes[i].pid==pNode.id){ 
         if(isShow==1){ 
         _sub_nodes[i].style.display="block"; 
         } 
         else if(isShow==0){ 
         _sub_nodes[i].style.display="none"; 
         } 
         } 
         } 
         } 
         render=()=> { 
         var tabId=this.props.tabId; 
         var _kpiTreePanelHeight=tabId=="tab01"?"kpitree_panel_height_01":"kpitree_panel_height_02"; 
         var _bottomContentHeight=tabId=="tab01"?"kbottom-content_height_01":"kbottom-content_height_02"; 
         return ( 
         <div className={"kpitree_panel "+_kpiTreePanelHeight}> 
         <div className="ksearch-div"> 
         <input type="text" className="ksearch-input" ref="ksearchInput" placeholder=" 請輸入搜索關鍵字"/> 
         <img className="ksearch-icon" src="https://www.gxlcms.com/src/kpiTree/images/search-icon.png" onClick={this._handleSearch}/> 
         <div className="kreturn-button" onClick={this._handleReturn}> 
         <span>返回</span> 
         </div> 
         <div className="kselecte-button" onClick={this._handleSelect}> 
         <span>指標選擇</span> 
         </div> 
         </div> 
         <div className={"kbottom-content "+_bottomContentHeight} ref="kpiTree"> 
         </div> 
         </div> 
         ); 
         } 
        }; 
        

        kpiTree.less文件

        .kpitree_panel{ 
         position: relative; 
         width:308px; 
         background-color: #F2F2F2; 
         border: 1px solid #cfcfcf ; 
        } 
        .kpitree_panel_height_01{ 
         height: 548px; 
        } 
        .kpitree_panel_height_02{ 
         height: 378px; 
        } 
        .ksearch-div{ 
         position: relative; 
         top: 10px; 
         margin-left: 4px; 
         width: 310px; 
         height: 30px; 
        } 
        .ksearch-input{ 
         border: 1px; 
         width: 145px; 
         height: auto; 
         border-radius: 10px; 
        } 
        .ksearch-icon{ 
         position: relative; 
         left: -24px; 
         width: 17px; 
         height: 17px; 
        } 
        .ksearch-button{ 
         position: relative; 
         left: 150px; 
         top: -22px; 
         font-size: 12px; 
         color: #999999; 
         padding-top: 3px; 
         text-align: center; 
         cursor: pointer; 
         width: 40px; 
         height:24px; 
         border: solid 0.8px #CBCBCB ; 
         -webkit-border-radius: 8px; 
        } 
        .kreturn-button{ 
         position: relative; 
         left: 171px; 
         top: -22px; 
         font-size: 12px; 
         color: #999999; 
         padding-top: 3px; 
         text-align: center; 
         cursor: pointer; 
         width: 40px; 
         height: 24px; 
         border: solid 0.8px #CBCBCB; 
         -webkit-border-radius: 8px; 
        } 
        .kselecte-button{ 
         position: relative; 
         left: 226px; 
         top: -46px; 
         font-size: 12px; 
         color: #999999; 
         padding-top: 3px; 
         text-align: center; 
         cursor: pointer; 
         width: 60px; 
         height: 25px; 
         border: solid 0.8px #CBCBCB; 
         -webkit-border-radius: 8px; 
         background-color: #F2F2F2; 
        } 
        .kbottom-content{ 
         padding: 10px; 
         color: #999999; 
         margin-left: 13px; 
         overflow-y: scroll; 
         overflow-x: hidden; 
         width: 280px; 
         margin-top: 20px; 
         background-color: #F7F7F7; 
        } 
        .kbottom-content_height_01{ 
         height: 480px; 
         } 
        .kbottom-content_height_02{ 
         height: 318px; 
        } 
        .knode-hide-show-icon{ 
         width: 10px; 
         height: 10px; 
         cursor: pointer; 
        } 
        

        下面這些json文件都放入json文件夾中

        treeListData.json文件

        [ 
         {"kid":"01","kname":"綜合指標","hasChild":"1","pid":"-1"}, 
         {"kid":"02","kname":"分析類指標","hasChild":"1","pid":"-1"}, 
         {"kid":"03","kname":"組合指標","hasChild":"1","pid":"-1"}, 
         {"kid":"04","kname":"移動業務計費收入","hasChild":"1","pid":"-1"}, 
         {"kid":"05","kname":"2G業務","hasChild":"1","pid":"-1"} 
        ] 

        treeListData01.json文件

        [ 
         {"kid":"010","kname":"綜合指標1","hasChild":"1","pid":"01"}, 
         {"kid":"011","kname":"分析類指標1","hasChild":"1","pid":"01"}, 
         {"kid":"012","kname":"組合指標1","hasChild":"1","pid":"01"}, 
         {"kid":"013","kname":"移動業務計費收入1","hasChild":"1","pid":"01"}, 
         {"kid":"014","kname":"2G業務1","hasChild":"1","pid":"01"} 
        ] 

        treeListData010.json文件

        [ 
         {"kid":"0100","kname":"綜合指標000","hasChild":"0","pid":"010"}, 
         {"kid":"0101","kname":"分析類指標000","hasChild":"0","pid":"010"}, 
         {"kid":"0102","kname":"組合指標000","hasChild":"0","pid":"010"}, 
         {"kid":"0103","kname":"移動業務計費收入000","hasChild":"0","pid":"010"}, 
         {"kid":"0104","kname":"2G業務000","hasChild":"0","pid":"010"} 
        ] 

        searchListData.json文件

        [ 
         {"kid":"01","kname":"綜合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"02","kname":"分析類指標","hasChild":"0","pid":"-1"}, 
         {"kid":"03","kname":"組合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"04","kname":"移動業務計費收入","hasChild":"0","pid":"-1"}, 
         {"kid":"05","kname":"2G業務","hasChild":"0","pid":"-1"}, 
         {"kid":"01","kname":"綜合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"02","kname":"分析類指標","hasChild":"0","pid":"-1"}, 
         {"kid":"03","kname":"組合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"04","kname":"移動業務計費收入","hasChild":"0","pid":"-1"}, 
         {"kid":"05","kname":"2G業務","hasChild":"0","pid":"-1"}, 
         {"kid":"01","kname":"綜合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"02","kname":"分析類指標","hasChild":"0","pid":"-1"}, 
         {"kid":"03","kname":"組合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"04","kname":"移動業務計費收入","hasChild":"0","pid":"-1"}, 
         {"kid":"05","kname":"2G業務","hasChild":"0","pid":"-1"}, 
         {"kid":"01","kname":"綜合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"02","kname":"分析類指標","hasChild":"0","pid":"-1"}, 
         {"kid":"03","kname":"組合指標","hasChild":"0","pid":"-1"}, 
         {"kid":"04","kname":"移動業務計費收入","hasChild":"0","pid":"-1"}, 
         {"kid":"05","kname":"2G業務","hasChild":"0","pid":"-1"} 
        ] 
        

        樹組件運行后的結果:

         

        搜索結果:(這里是請求了一個json文件的數據,在實際的交互中可根據自己輸入的名稱去請求后臺對應的數據即可)

         

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ReactJs實現樹形結構的數據顯示的組件的示例

        ReactJs實現樹形結構的數據顯示的組件的示例:本文介紹了ReactJs實現樹形結構的數據顯示的組件的示例,分享給大家,具體如下: 1、該組件樹形顯示數據 2、組件中數據的請求方式為fetch方式 3、點擊對應的數據前面的小三角,fetch請求改數據下對應的子數據,并展開該節點。 4、將該組件的js、le
        推薦度:
        標簽: 的數據 rea React
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: www.亚洲精品| 日本免费无遮挡吸乳视频电影| 免费a级毛片网站| 亚洲日韩国产AV无码无码精品| 91免费在线播放| 亚洲乱码在线卡一卡二卡新区| 久久精品免费全国观看国产| 久久亚洲精品国产精品婷婷| 成人激情免费视频| 美女裸体无遮挡免费视频网站| 国产免费怕怕免费视频观看| 老司机亚洲精品影院在线观看| 免费在线观看a级毛片| 好吊色永久免费视频大全| 三上悠亚亚洲一区高清| 国产乱子伦精品免费女 | 亚洲a一级免费视频| 免费看又黄又无码的网站| 亚洲福利电影一区二区?| 成年女人免费视频播放体验区| 亚洲乱亚洲乱妇无码| 亚洲伦乱亚洲h视频| a级成人毛片免费视频高清| 亚洲白色白色永久观看| 免费无码一区二区三区蜜桃大| 免费的黄色网页在线免费观看| 国产亚洲人成无码网在线观看| 18禁黄网站禁片免费观看不卡| 亚洲熟女综合一区二区三区| 亚洲第一区精品观看| 伊人久久免费视频| 亚洲av永久中文无码精品| 中文字幕在亚洲第一在线| 亚洲精品在线免费观看| 国产亚洲漂亮白嫩美女在线| 日本红怡院亚洲红怡院最新 | 91精品免费不卡在线观看| 亚洲精品无码永久在线观看男男 | 亚洲欧洲久久久精品| 亚洲黄色片免费看| 免费无遮挡无码视频在线观看|