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

使用添加按钮在React中添加输入

江建明
2023-03-14
问题内容

我正在尝试提供一组可以重复或删除的输入。

我发现并使用了以下方法的组合:https :
//jsfiddle.net/69z2wepo/36745/
并且(因为上面的代码无法处理删除操作):https :
//codepen.io/lichin-lin/pen/ MKMezg

我可能不需要指向一个特定的输入,因为在我的界面中,您应该始终只添加一个新的(如果之前的一个已填充)(我将在稍后设置条件),因此仅删除最后一个。因此,我可以使用一个简单的计数器来解决所有这些问题(尽管对于不同的输入类型,我将需要3-4个计数器)。

/* ************************************* */
/* ********       IMPORTS       ******** */
/* ************************************* */
import React, { Component } from 'react';
import { Card, CardBlock, Button, InputGroup, Input } from 'reactstrap';
import ProviderInfos from '../ProviderInfos/ProviderInfos';

/* ************************************* */
/* ********      VARIABLES      ******** */
/* ************************************* */

const count = 0;

/* ************************************* */
/* ********      COMPONENT      ******** */
/* ************************************* */
export default class SearchExtendedComponent extends Component {

    constructor(props) {
        super(props);
        this.state = { inputList: [] };
        this.incrementCount = this.incrementCount.bind(this);
        this.decrementCount = this.decrementCount.bind(this);
    }

    incrementCount() {
      const inputList = this.state.inputList;
        this.setState({
            count: this.state.count + 1,
            inputList: inputList.concat(<Input key={count} />),
        });
    }
    decrementCount() {
      const inputList = this.state.inputList;
        this.setState({
            count: this.state.count - 1,
            inputList: inputList.concat(<Input key={count} />),
        });
    }
    render() {
        return (
            <Card>
                <CardBlock className="main-table">
                    <InputGroup>
                        <Input placeholder="Type1" />
                        <ProviderInfos />
                    </InputGroup>
                    {/* THE IDEA IS TO HAVE AN ADD AND REMOVE BUTTON FOR EACH TYPE */}
                    <InputGroup className="add-more">
                        <button onClick={this.incrementCount}>Add input</button>
                        {this.state.inputList}
                    </InputGroup>
                    <InputGroup>
                        <Input placeholder="Type2" />
                        <ProviderInfos />
                    </InputGroup>
                    <InputGroup>
                        <Input placeholder="Type3" />
                        <ProviderInfos />
                    </InputGroup>
                    <Button color="secondary">Options</Button>{' '}
                    <Button id="btn">Exécuter</Button>
                </CardBlock>
            </Card>
        );
    }
}

我在控制台中收到一个错误:

Warning: flattenChildren(...): Encountered two children with the same key, `1:$0`. Child keys must be unique; when two children share a key, only the first child will be used.

这似乎与发生的情况相符:

在“添加”按钮停止工作之后,仅添加第一个新输入。

如您所见,我当前正在声明函数中的输入(或者至少在我看来是……。那不是什么const inputList = this.state.inputList;?),我认为这就是我应该在“计数”旁边声明的问题“海事组织,但我试图做到:

const inputList = this.state.inputList;

const propTypes = { inputList: React.PropTypes.inputList, };

导致应用程序根本无法加载:“无法读取未定义的属性’state’”。

不仅如此,但对我而言,这似乎不是干净的重构代码,因为我已经做了两次,请记住,由于添加和删除功能(和按钮)都将要重复此代码,因此必须有3到4种不同的输入类型。


问题答案:

在初始状态下添加计数。

this.state = { inputList: [] , count :0};

然后删除这行 const count = 0;

由于您使用count作为密钥,因此也将其更改为。

<Input key={this.state.count} />

我为另一个问题做了一个jssfiddle,这个概念很相似,因此可能会有所帮助。



 类似资料:
  • 我一直习惯于使用jquery或其他javascript框架,但现在我没有框架可供使用,所以我想看看是否有人知道我如何在可能的情况下使用纯javascript实现这一点。 基本上我有一个这样的div 我需要的一个是,当点击AddMore按钮时,我需要基本上添加更多的宽度和长度字段,或者创建一个完整的结构,就像上面包含所有div的结构,或者只是插入一个新的span标记,其中包含现有div下面的字段。

  • 问题内容: TL; DR:如何在ModelForm中为ForeignKey添加“添加新”按钮? 长版:我在项目中使用Django 1.7。我的models.py中有这两个模型 [省略了一些其他不相关的字段] 我正在使用ModelForm用新命令填充数据库,如下所示: Django在为客户字段添加下拉菜单方面做得很好,并在其中添加了来自客户的条目。不过,我想拥有一个“添加新客户”链接/按钮/以便在添

  • 我有一些问题在按钮中添加代码,所以示例:我在数量上输入2它将*价格和数量示例400*2=800,但当我再次输入2意味着800x2=1600,有人能指导我吗?谢谢,最后2行显示了错误。 `private void jButton2ActionPerformed(java.awt.event.ActionEvt){ int id=integer.parseint(jTextField1.getText

  • 本文向大家介绍使用jQuery在移动页面上添加按钮和给按钮添加图标,包括了使用jQuery在移动页面上添加按钮和给按钮添加图标的使用技巧和注意事项,需要的朋友参考一下 创建按钮 data-role=button 给HTML元素添加 data-role="button" 属性。jQuery Moble就会给此元素增强为按钮样式。 Jquery Mobile框架包含了一组最常用的移动应用程序所需的图标

  • 问题内容: 我只是试图在我的注释点添加一个细节按钮而被卡住,不幸的是,我不知道该怎么做。有人可以帮我吗? 下图显示了我想要实现的目标。谢谢! MapKitViewController: 问题答案: 您做对了,您只需要实现这些方法即可添加按钮以及标题和副标题 iOS 8和Xcode 6 查看我的输出。

  • 问题内容: 我搜索了在jtable中添加按钮的教程,并从http://tips4java.wordpress.com/2009/07/12/table-button- column/ 找到了一个类文件, 该按钮在哪里设置? 问题答案: 它是通过DefaultTableModel中的数据在表渲染器和编辑器中自动设置的。例如,对于表编辑器,代码为: 表模型的值在哪里。有关详细信息,请参见ButtonC