当前位置: 首页 > 面试题库 >

如何使用json数据在reactjs中创建动态HTML表单?

钱浩荡
2023-03-14
问题内容

嗨,有人可以帮我如何使用本地json数据表单在reactjs中创建动态html表单。我有以下json格式,其中包含3个字段的表单详细信息。

{
"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"}
    ]
}

下面是我需要动态创建的表单的react组件,截至目前,我有3个字段是静态的,需要从上面的json动态放置。

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

我是新来的反应者,有人可以帮我在reactjs中做到这一点吗?


问题答案:

拥有JSON数据后,就可以对其进行map覆盖并动态创建布局,如下所示:

// 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>


 类似资料:
  • 我有多个动态json模板如下 JSON 1 JSON 2 JSON 3 我想在运行时将它们隐藏到JAVA对象中,即在编译时不创建POJO。这可能吗?如果是,如何做到这一点? 我尝试使用Jackson lib将json转换为对象(对象类),但如何创建通用POJO,或者如何使用setter-getter动态创建POJO?

  • 我试图创建一个数据网格——或者在angular2中用JSON对象创建一个表格。我的问题是我不知道表中有多少列,也不知道这些列的名称。 从我目前的理解我需要定义世界卫生大会 也许一个例子会让事情变得更清楚。。。 下面是我需要在同一个表中呈现的两个JSON示例... 示例1 示例 2 这里有我的组件… 表格: 应用程序字段映射行: 注意:这是我卡住的地方! 我如何创建正确的数量的细胞和h 我没能找到任

  • 本文向大家介绍如何在HTML中创建表头?,包括了如何在HTML中创建表头?的使用技巧和注意事项,需要的朋友参考一下 要使用HTML创建表头,请使用<th>…</ th>标记。表标题标签被表行<tr>…</ tr>包围。<tr>标记被<table>标记包围。表格由行和列组成,可以使用一个或多个<tr>,<th>和<td>元素进行设置。使用style属性添加CSS属性,以向表添加边框。 表行由<tr>

  • 我正在尝试创建一个spark应用程序,它对创建、读取、写入和更新MySQL数据非常有用。那么,有没有办法使用Spark创建一个MySQL表? 下面是在MySQL数据库中创建表的Scala JDBC代码。我怎样才能通过Spark做到这一点?

  • 问题内容: 当我查看 react.js官方网站的参考中的示例时,我想知道应该如何实现这样一种方法,在该方法中,您将能够动态地控制元素和 元素,使它们成为受控组件?这有可能吗? 在示例中,我们可以看到: 由于工作的性质,我经常发现自己必须执行这种形式。此外,我不知道或 元素直接- 我管理的自定义组件,但为了简单起见这里的缘故,我要求基本的表单元素。 问题答案: 如何动态地添加/删除输入元素? 是的,

  • 问题内容: 我正在尝试创建以下内容: 我开始 如何继续动态创建数组(可能会随变量更改)?我似乎没有正确的嵌套数组。 问题答案: 我们的对象数组 与…有关 或使用,它更干净:

  • 问题内容: 所以我有这个HTML表单: 当用户单击“提交”时,哪种形式最简单的方法将此表单的数据作为JSON对象发送到我的服务器? 更新:我已经走了这么远,但似乎没有用: 我究竟做错了什么? 问题答案: 获取完整的表单数据作为数组,并对其进行json字符串化。 您可以稍后在ajax中使用它。或者,如果您不使用ajax;将其放在隐藏的文本区域中并传递到服务器。如果此数据通过常规格式数据作为json字

  • 让我澄清一下这个问题。 我正在创建一个具有2个组合框的JavaFX应用程序。一个显示MySQL数据库中的可用目录,另一个显示第一个组合框中所选目录中的可用表。现在的问题是,我需要创建一个TableView来显示“desc tableName”MySQL命令的结果。 我正在使用jdbc API,使用语句接口执行“”,并将数据获取到一个结果集。我能够用ResultSetMetaData对象中的列名填充