2017-02-22 14 views
1

こんにちは誰も私はどのようにjsonデータフォームのローカルを使用してreactjsで動的なHTMLフォームを作成する手助けできます。私は3つのフィールドのフォームの詳細を含む以下のJSONフォーマットを持っています。jsonデータを使用してreactjsでダイナミックhtmlフォームを作成するには?

{ 
"sampleData": 
    [{"indexId":"1", 
    "abrvIndexName":"firstname", 
    "indexDesc":"First Name", 
    "htmlControlType":"textbox", 
    "cssClassName":"form-control"}, 
    {"indexId":"2", 
    "abrvIndexName":"lastname", 
    "indexDesc":"Last Name", 
    "htmlControlType":"textbox", 
    "cssClassName":"form-control"} 
    {"indexId":"3", 
    "abrvIndexName":"address", 
    "indexDesc":"Address", 
    "htmlControlType":"textarea", 
    "cssClassName":"form-control"} 
    ] 
} 

以下iは静的であり、動的上記JSONから配置する必要がある3つのフィールドを持って、今のように、私は、動的に作成する必要がフォームの反応成分です。

var React = require('react'); 
var ReactDOM = require('react-dom'); 

var Menu = React.createClass({ 

render: function() { 
    return (

     <div className="container"> 
      <br/> 
      <div className="panel panel-primary"> 
       <div className="panel-heading">Sample Dynamic Form using json data</div> 
        <div className="panel-body"> 
          <form className="form-horizontal"> 
           <div className="form-group"> 
            <label for="firstname" className="col-sm-2 control-label">First Name</label> 
             <div className="col-sm-8"> 
              <input type="text" className="form-control" id="firstname" placeholder=""/> 
             </div> 
           </div> 
           <div className="form-group"> 
            <label for="lastname" className="col-sm-2 control-label">Last Name</label> 
             <div className="col-sm-8"> 
              <input type="text" className="form-control" id="lastname" placeholder=""/> 
             </div> 
           </div> 
           <div className="form-group"> 
            <label for="address" className="col-sm-2 control-label">Address</label> 
             <div className="col-sm-8"> 
              <textarea type="text" className="form-control" id="address" placeholder=""/> 
             </div> 
           </div> 

           <div className="col-md-10 text-right"> 
            <button type="button" className="btn btn-primary">Submit</button> 
           </div> 

          </form> 


        </div>  
      </div> 
     </div> 
    ) 
} 

}); 
module.exports = Menu 

私は反応するのが新しいです、誰も私に反応する方法を教えてもらえますか?

+0

が必要ですそれはJSONをレンダリングするでしょうか? – paqash

+0

JSONデータをフォーム内の変数として使用したいだけでは、どういう意味ですか? JSONと同様に、フォームコンポーネントのプロパティですか? – Jayce444

+0

@paqash静的なhtmlコントロールを、jsonデータを使って動的フォームに置き換えたいと思います。私はそれを行う方法を知りたいです – knbibin

答えて

3

あなたはJSONデータを持っていたら、あなたはそれを超えるmapをする可能性があるため、動的にそのような何かレイアウトを作成する:あなたは、JSONまたは単にコードを取得するコードを

// You can `require` a local file or `fetch` it from somewhere 
 
// For the demo purpose, I just included it here. 
 
const JSON = [ 
 
    { 
 
     "indexId":"1", 
 
     "abrvIndexName":"firstname", 
 
     "indexDesc":"First Name", 
 
     "htmlControlType":"textbox", 
 
     "cssClassName":"form-control" 
 
    }, 
 
    { 
 
     "indexId":"2", 
 
     "abrvIndexName":"lastname", 
 
     "indexDesc":"Last Name", 
 
     "htmlControlType":"textbox", 
 
     "cssClassName":"form-control" 
 
    }, 
 
    { 
 
     "indexId":"3", 
 
     "abrvIndexName":"address", 
 
     "indexDesc":"Address", 
 
     "htmlControlType":"textarea", 
 
     "cssClassName":"form-control" 
 
}]; 
 

 
var Menu = React.createClass({ 
 

 
    renderFormGroups: function() { 
 
     // Assume your data is fetched/available 
 
     const data = JSON; 
 

 
     // Here we build the form's groups elements dynamically 
 
     return data.map(group => { 
 
      return <div className="form-group"> 
 

 
       <label for={group.abrvIndexName} 
 
         className={"col-sm-2 " + group.cssClassName}> 
 
        {group.indexDesc} 
 
       </label> 
 

 
       <div className="col-sm-8"> 
 
         <input type="text" 
 
          className="form-control" 
 
          id={group.abrvIndexName} 
 
          placeholder="" /> 
 
        </div> 
 

 
      </div> 
 
     }); 
 
    }, 
 

 
    render: function() { 
 
     return (
 
      <div className="container"> 
 
       <div className="panel panel-primary"> 
 
        <div className="panel-heading">Sample Dynamic Form using json data</div> 
 
        <div className="panel-body"> 
 
         <form className="form-horizontal"> 
 
          {this.renderFormGroups()} 
 
         </form> 
 
        </div>  
 
       </div> 
 
      </div> 
 
     ) 
 
    } 
 
}); 
 

 
ReactDOM.render(<Menu />, 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"> 
 
    <!-- This element's contents will be replaced with your component. --> 
 
</div>

+0

jsonをどのように反応コンポーネントにインポートできますか?私のjsonがdataフォルダ内にあるとします.app/data/samplejson.json、これはどのようにインポートされますか? – knbibin

+0

'var data = require(app/data/samplejson ');'。詳細はこちらhttp://stackoverflow.com/questions/37649695/how-can-i-parse-through-local-json-file-in-react-js –

+0

@knbibin動作するコードサンプルを追加しました。それで遊ぶことができます。あなたはどこからでも 'JSON'データを自由にインポート/フェッチすることができます。 –

関連する問題