2017-02-21 8 views
1

checkboxオプションを使用してツリービューを作成する方法はreact jsです。 checkboxは、ツリーの右側に配置する必要があります。チェックボックスオプションのあるツリービューに反応する

以下

はtreeiewを作成するためのjsonサンプルです。これを達成する

var json = [ 
     { 
     "text": "Parent 1", 
     "nodes": [ 
     { 
      "text": "Child 1", 
      "nodes": [ 
       { 
       "text": "Grandchild 1" 
       }, 
       { 
       "text": "Grandchild 2" 
       } 
      ] 
      }, 
      { 
      "text": "Child 2" 
      } 
     ] 
     }, 
     { 
     "text": "Parent 2" 
     }, 
     { 
     "text": "Parent 3" 
     }, 
     { 
     "text": "Parent 4" 
     }, 
     { 
     "text": "Parent 5" 
     } 
    ]; 

答えて

0

使用この再帰関数:

_createList(item, margin){ 
     return item.map((el,i)=>{ 
      return <div key={i} style={{marginLeft: margin}}> 
        {el.text} 
        <input type='checkbox'/> 
        {el.nodes && el.nodes.length ? this._createList(el.nodes, 10) : null} 
       </div> 
     }) 
    } 

    render() { 
    return (
     <div > 
      {this._createList(json, 0)} 
     </div> 
    ) 
    } 

作業fiddleを確認してください:https://jsfiddle.net/mayankshukla5031/rm49r11a/

var json = [ 
 
     { 
 
     "text": "Parent 1", 
 
     "nodes": [ 
 
     { 
 
      "text": "Child 1", 
 
      "nodes": [ 
 
       { 
 
       "text": "Grandchild 1", 
 
       "nodes": [ 
 
        { 
 
         'text': 'G GrandChild1.1', 
 
         'nodes': [ 
 
          { 
 
           'text': 'G G GrandChild1.1.1' 
 
          } 
 
         ] 
 
        }, 
 
        { 
 
         \t text: 'G GrandChild1.2' 
 
        } 
 
       ] 
 
       }, 
 
       { 
 
       "text": "Grandchild 2" 
 
       } 
 
      ] 
 
      }, 
 
      { 
 
      "text": "Child 2" 
 
      } 
 
     ] 
 
     }, 
 
     { 
 
     "text": "Parent 2" 
 
     }, 
 
     { 
 
     "text": "Parent 3" 
 
     }, 
 
     { 
 
     "text": "Parent 4" 
 
     }, 
 
     { 
 
     "text": "Parent 5" 
 
     } 
 
    ]; 
 
class App extends React.Component { 
 
    constructor() { 
 
    super(); 
 
    this.state = { 
 
    }; 
 
    } 
 
    
 
    _createList(item, margin){ 
 
     return item.map((el,i)=>{ 
 
      return <div key={i} style={{marginLeft: margin}}> 
 
        {el.text} 
 
        <input defaultChecked type='checkbox'/> 
 
        {el.nodes && el.nodes.length ? this._createList(el.nodes, 10) : null} 
 
       </div> 
 
     }) 
 
    } 
 
    
 
    render() { 
 
    return (
 
     <div > 
 
     \t {this._createList(json, 0)} 
 
     </div> 
 
    ) 
 
    } 
 
} 
 

 
ReactDOM.render(<App />, document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id="container" ></div>

+0

すばやくお返事ありがとうございます。ツリービュー左側に展開と折りたたみのアイコンを追加する方法。親アイコンのOnclick私はtreeviewを拡張する必要があります。 – rafik

+0

はい、うまく動作します。ツリービュー左側に展開と折りたたみのアイコンを追加する方法。親アイコンのOnclick私はtreeviewを拡張する必要があります。私はチェックを使用しています:jsonではtrueですが、UIのデフォルトチェックオプションでは動作しません。 – rafik

+0

サンプルコードまたはフィドルリンク(ツリービューで展開およびクローズアイコン)を共有してください。それは私の基本要件です – rafik

関連する問題