在反应中渲染输入数组

2024-02-07

我有一系列电子邮件(作为更大模型的一部分)。这些显示在单独的行中,每个行都有一个删除按钮(地址本身可以直接在输入框中更新)。不幸的是,当使用地图函数渲染输入时,我不知道如何在反应中做到这一点。 (我正在将流星火焰项目转换为流星反应)。

一切都会呈现,但如何附加到更改事件以便我可以更新我的电子邮件数组? onChange + value 需要以某种方式设置。

这是地图功能

return this.data.emailGroup.emails.map((email) => {
            return (
                <div key={email} className="input-group">
                    <input type="text" className="form-control" onChange={self.handleEmailListChange} value={email}/>

                    <div className="input-group-btn">
                        <button type="button"
                                className="btn btn-default remove-email"><span
                            className="glyphicon glyphicon-remove"></span></button>
                    </div>
                </div>
            );
        });

初始状态(用数据库中的数据填充:

 getInitialState() {
      return {
          name : '',
          description: '',
          emails : [],
          newEmailAddress : ''
      }
    },

根据请求,这里是渲染方法(它需要 getContent 方法。 getcontent 方法之所以存在,是因为在流星中我需要等待数据,所以同时我需要一个加载状态。

   getContent() {
        return (

            <div className="box box-success">
                <div className="box-header with-border">
                    <h3 className="box-title">List of emails</h3>
                </div>
                <form role="form" className="form-horizontal">
                    <div className="box-body">
                        <p>Below is a list of email addresses which are added to this email group. If
                            you
                            want
                            to add more
                            you can add them one by one by inputting in the box below or add a list into
                            the
                            same box (email
                            addresses have to be seperated by either a space or ;) then press Add to add
                            to
                            the
                            list. You can edit
                            the addresses directly as well as remove them.</p>
                        <div className="input-group">
                            <input type="text" className="form-control"

                                   value={this.state.newEmailAddress}
                                   onChange={this.handleAddNewEmail}
                                   placeholder="Email addresses seperated by a space or a semicolon ; i.e. [email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection"/>
                    <span className="input-group-btn">
                      <button type="button" onClick={this.handleAddNewEmailButton} className="btn btn-info btn-flat add-email">Add</button>
                    </span>
                        </div>
                        <br/>
                        {this.renderEmail()}
                    </div>
                </form>
            </div>
        )
    },
    render()
    {
    var contentStyle = {
        minHeight : '946px'
    };
        return (
            <div className="content-wrapper" style={contentStyle}>
                <section className="content-header">
                    <h1>
                        {this.data.emailGroup? this.data.emailGroup.name : 'hello'}
                    </h1>
                    <small> Created by: Christian Klinton</small>
                    <br/>
                    <small> Last updated by: Christian Klinton - 2015-11-12 08:10:11</small>
                    <ol className="breadcrumb">
                        <li><a href="/emailGroups"><i className="fa fa-dashboard"></i> Home</a></li>
                        <li><a href="/emailGroups">Email groups</a></li>
                        <li className="active">{this.data.emailGroup? this.data.emailGroup.name : 'loading'}</li>
                    </ol>
                </section>
                <section className="content">
                    <div className="row">
                        <div className="col-md-6">
                            <div className="box box-primary">
                                <div className="box-header with-border">
                                    <h3 className="box-title">Information</h3>

                                </div>
                                <form role="form">
                                    <div className="box-body">
                                        <div className="form-group">
                                            <label htmlFor="inputName">Name</label>
                                            <input type="email" className="form-control" id="name"
                                                   onChange={this.handleNameChange}
                                                   placeholder="Set the name of the email group" autoComplete="off"
                                                  value={this.state.name}/>
                                        </div>

                                        <div className="form-group">
                                            <label>Description</label>
                                    <textarea className="form-control" rows="3" id="description"
                                              placeholder="Enter a description what and how the template is used..."
                                              onChange={this.handleDesriptionChange}
                                              value={this.state.description}
                                    ></textarea>
                                        </div>


                                    </div>
                                </form>
                            </div>
                        </div>
                        <div className="col-md-6">
                            {this.data.emailGroup? this.getContent() : <p>Loading</p> }
                        </div>
                        <div className="form-group">
                            <div className="col-sm-offset-8 col-sm-4">
                                <div className="pull-right">
                                    <button className="btn btn-primary">Delete all</button>
                                    <button className="btn btn-primary save">Save</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </section>
            </div>
        )
    }

React 要求渲染数组中的每个元素都有唯一的东西,它被称为key,它是一个属性。

如果您不知道要为键分配什么,只需为其分配数组的索引:

this.props.doors.map((door, index) => (
    <div key={index} className="door"></div>
));

这是适用于您的问题的相同解决方案:

return this.data.emailGroup.emails.map((email, index) => {
    return (
        <div key={index} className="input-group">
            <input type="text"
                   className="form-control"
                   onChange={self.handleEmailListChange.bind(this, index)} value={email}/>
        </div>
    );
});

注意我是如何绑定的handleEmailListChange接收修改后的电子邮件的索引。如果handleEmailListChange接受索引,它可以更新状态内修改的电子邮件:

handleEmailListChange: function(index, event) {
    var emails = this.state.emails.slice(); // Make a copy of the emails first.
    emails[index] = event.target.value; // Update it with the modified email.
    this.setState({emails: emails}); // Update the state.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在反应中渲染输入数组 的相关文章

  • jQuery:如何将 jQuery 日期选择器放入 Bootstrap Popover 中? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我试图在引导弹出窗口中显示 jquery datepicker 并尝试了解决方案引导程序弹出窗口内的日期选择器 关闭 https
  • 数字和数字对象有什么区别?

    存储在普通变量中的数字有什么区别 var foo 5 和一个数字对象 var bar new Number 5 数字对象可以用来做什么 A Number对象包含一些有用的方法和属性 例如 数字对象方法 Method Description
  • DOM 元素宽度可以是非整数吗?

    我有一个页面 其 div 元素由 JavaScript 对齐 JavaScript 只是检查一组 div 元素来查找最大值偏移宽度 然后设置所有 div 元素 width成为最大偏移宽度 它在大多数浏览器和区域设置中都能完美运行 但在 Ma
  • JavaScript 计算从今天到 7 天前的日期

    我正在计算从今天开始的日期前 12 天 但它不会返回正确的日期 例如 对于今天的日期 11 11 2013 mm dd yyyy 它返回 10 30 2013 而它应该返回 10 31 2013 这是代码 var d new Date d
  • 如何在 jquery 中创建“可重用”函数?

    我有这段代码效果很好 function displayVals var phonevals bphonesel val bphone val phonevals select change displayVals displayVals 我
  • 如何从谷歌地图中的纬度和经度获取地址位置? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 所以我有纬度和经度就像44 4647452 and 7 3553838 我需要获得如下地址 米兰 意大利 str 肯尼迪 89 我怎样才能
  • jQuery 显示隐藏左侧滑动面板

    我希望在单击按钮时面板从浏览器的左边缘滑动 并在单击同一按钮 切换 时隐藏面板 Html div class panel div a href class slider arrow show raquo a CSS panel width
  • 在 JavaScript 中对数组进行排序

    我正在尝试对内部包含整数的数组进行排序 例如 var array 123 3 745 4 643 5 643 2 我如何对其进行排序才能返回类似以下内容的内容 array 745 4 643 2 643 5 123 3 您可以将自定义比较函
  • 如何让 jQuery 选择带有 . (句号)在他们的身份证件中?

    给定以下类和控制器操作方法 public School public Int32 ID get set publig String Name get set public Address Address get set public cla
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • 根据每个选项的值或 ID 过滤选择框

    我想使用jquery来过滤表单中的所有选择框 例如 在第一个选择框中 如果我选择 仅显示1 我想过滤所有选择元素中的所有选择选项 以隐藏值不包含 1 的任何选项 仅应显示带有 1 的产品值 如果选择 Filter 选项 则所有选择框的默认值
  • IE7 真的不支持indexOf javascript 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 数组上的 indexOf 函数在使用 JavaScript 的 IE7 8 中不起作用 https stackoverflow com questions 11544983 indexof funct
  • 如何从CDN注入外部JS到Jest单元测试?

    我有 npm 和 webpack 的反应应用程序 我正在尝试向其添加单元测试 我使用的是包含在我的index html 中的CDN 的jQuery 而不是使用节点模块 我在组件中使用 jQueryTest1我向其中添加了单元测试用例 现在
  • 在 Photoshop 中使用 javascript 修改文本项的内容

    我知道如何使用这样的代码在 Photoshop 中设置文本项的内容 var al doc activeLayer if al kind LayerKind TEXT get the textItem var ti al textItem c
  • 为什么我会失去对元素的引用?

    我偶然发现了一些奇怪的东西 至少对我来说 案例如下 我选择一个元素 child1 从 DOM 并将其保存到变量中 我继续添加一个新元素child1的家长 parent1 现在 如果我尝试修改某些值child1它不记录更改 似乎引用已经消失
  • 地理编码服务与 gMap 搜索之间的差异结果

    我想获取此地址的纬度和经度 Boulevard de la Marne Zone industrielle COULOMMIERS 77120 France 我将 api 添加到我的页面 当我使用 gmaps 时 结果很好 但是当我想通过
  • Magnific Popup:来自span的源标题

    我想从锚标记内的隐藏标题字段中获取放大图像的标题 而不是从标题中获取 这是因为我的标题包含标记 HTML a href img zoom jpg img src img small jpg alt span class hide This
  • HighCharts - 两个 Y 轴,一个具有最大值

    我在使用 Highcharts 时遇到问题 我已将右 Y 轴设置为 min 0 和 max 100 它是 但它不起作用并生成 125 百分比 怎么了 http jsfiddle net SdTcU http jsfiddle net SdT
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • 嵌套对象的 setState

    我有一个嵌套对象作为状态 并且在组件中有一个表单 我正在考虑每次用户在表单中输入某些内容时更新状态 并且为了避免为每个输入创建许多函数 我正在考虑使用 switch 创建单个函数 使用 switch 创建单一函数是个好主意吗 如何更新对象的

随机推荐

  • 如何在 Swift 中为 UIView 子类编写自定义 init?

    说我想要init a UIView子类具有String and an Int 如果我只是子类化 我该如何在 Swift 中做到这一点UIView 如果我只是定制init 函数 但参数是一个 String 和一个 Int 它告诉我 在从初始化
  • pyinstaller错误:找不到scipy(没有名为_ufuncs_cxx的模块)

    我正在使用 pyinstaller 将 python 脚本转换为 Ubuntu 14 04 中的二进制文件 我使用 Canopy Enthought 来管理所有 python 库 该代码使用networkx numpy 和scipy 这是我
  • Java 的去中心化集群库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android中绘制镜像位图

    我正在尝试学习如何在 android 中制作动画精灵 但不知道如何组织我的位图 我有一个角色向右行走的精灵表 一个角色的五个副本的位图 在一个行走周期中等距 每 45 像素 我计划通过一次绘制精灵表位图的一小部分来绘制每个帧 方法是 Rec
  • 实现将内容插入数据库的秘密电子邮件功能

    所以我见过其他大公司 比如 Facebook 这样做 你可以通过电子邮件发帖 这就是我的情况trying to do 用户注册并生成随机电子邮件 密钥 这一步就完成了 然后根据密钥创建实际的工作电子邮件 用户可以在向密钥发送电子邮件的同时输
  • 按钮不适用于更新面板

    我在更新面板中放置了一个计时器和一个用于显示倒计时时间的标签 我已放置下一个按钮 用于在更新面板之外显示下一个问题 我的问题是按钮单击不适用于更新面板 在不使用更新面板和计时器的情况下 它运行良好 我该如何解决这个问题 我还尝试将整个工具放
  • R:xts 中的错误 - order.by

    我正在尝试 重新 构建标准普尔 500 指数的基本预测模型 数据来自雅虎财经 我在数据集的 排序 方面遇到了一些困难 在构建data model期间出现以下错误 xts new x x index 中的错误 NROW x 必须匹配长度 or
  • 从注册表c#检查Windows版本[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有个问题 如何在 C 中从注册表中检查 Windows 版本 Windows XP 至 Windows 8 1 Environment
  • 警告:org.springframework.web.servlet.PageNotFound - 不支持请求方法“GET”

    我在启动服务器时遇到此异常 HTTP Status 405 Request method GET not supported 我的控制器是 Controller public class HomeController private sta
  • 函数“didUpdateToLocation”被调用而不进行任何更改

    我这样初始化 locationManager if self locManager self locManager CLLocationManager alloc init self locManager delegate self loc
  • OSGi 捆绑包无法启动 - 无法解析 sun.reflect.generics.reflectObjects

    在对 AEM 项目的代码进行看似无关的更改后 我的包无法解析 检查日志后 我可以看到出现以下错误 22 04 2015 11 00 18 650 ERROR qtp1266495948 35 org apache felix http je
  • docker引擎swarm模式需要服务发现

    我对 docker swarm 感到困惑 据我所知 在 docker 引擎为 swarm 模式提供本机支持之前 运行 swarm 的旧方法是在容器中运行管理器和工作人员 旧的容器化 Swarm 的文档解释了如何使用 consul etcd
  • 如何使 NSMutableAttributedString 响应设置应用程序中的动态类型文本

    let dictTitleColor NSAttributedStringKey foregroundColor UIColor LTColor let titleAttributedString NSMutableAttributedSt
  • 调用变量中指定的对象的 Javascript 成员函数

    我有以下所谓的揭示模块模式我想调用这个函数a内部函数b使用变量 我怎样才能做到这一点 foo function a function b function memberName a Call a using value stored in
  • 在另一台计算机上运行时,运行 SWIG 绑定的 Python+C 程序会出现缺少 DLL 错误

    因此 我编写了一个小型测试程序 使用 SWIG 作为 python 和 C 之间的桥梁 该程序的主要部分是 python 文件 该东西在我自己的电脑上运行良好 但一旦我将其转移到另一台电脑上 它立即抛出 ImportError DLL加载失
  • 访问与局部变量(或参数)同名的成员字段

    考虑以下代码片段 struct S S const int a this gt a a option 1 S a a option 2 int a 选项 1 与选项 2 等效吗 是否存在一种形式优于另一种形式的情况 标准的哪个条款描述了这些
  • Django 国际化性能问题(USE_I18N=False 时为 3-4 秒 vs 300 毫秒)

    因此 我们有一个包含大量信息的页面 并且我们经常使用 trans 但是当我们实际使用它们时 USE I18N True 网站就会停止运行 使用 i18n 与使用 i18n 大约需要 3 5 秒关闭时 300 毫秒 我们做了一些分析 似乎翻译
  • 使用 Varnish 时 Magento Onepagechekout 登录问题

    我在用着 Magento v1 7 0 2 Varnish 缓存 v3 0 3 和 IWD 的一页结账 OPC 模块 v2 0 9 我已将 一页结帐 和 一步结帐 路由添加到应从 Varnish 缓存中排除的路由中 我可以看到OPC页面没有
  • 动态使用第一帧作为 HTML5 视频中的海报?

    我想知道是否有任何直接的方法可以实现这种效果 而不需要后端代码来提取帧 将其保存为 jpg 并将其数据库存储在某个地方 当视频加载时 视频的第一帧只显示为海报的效果会非常有帮助 只有当浏览器可以明显地播放视频时 它才会起作用 这可能与方式有
  • 在反应中渲染输入数组

    我有一系列电子邮件 作为更大模型的一部分 这些显示在单独的行中 每个行都有一个删除按钮 地址本身可以直接在输入框中更新 不幸的是 当使用地图函数渲染输入时 我不知道如何在反应中做到这一点 我正在将流星火焰项目转换为流星反应 一切都会呈现 但