Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用输入组件数组中的输入值创建数组?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用输入组件数组中的输入值创建数组?

Javascript 如何使用输入组件数组中的输入值创建数组?,javascript,reactjs,Javascript,Reactjs,每次单击时,我都会连接组件并将其渲染到屏幕上。这很有效。但是,如果我想从这些组件中获取数据值并将它们放在同一个数组、CompList或其他数组中,该怎么办?为了清楚起见,我希望不同输入框中的所有值都对应于数组中自己的元素,例如:如果elementName=数组的索引1内,则是索引处的值。我该怎么做呢 import React, { Component } from 'react'; import './App.css'; import Comp from './Comp'; import But

每次单击时,我都会连接组件并将其渲染到屏幕上。这很有效。但是,如果我想从这些组件中获取数据值并将它们放在同一个数组、CompList或其他数组中,该怎么办?为了清楚起见,我希望不同输入框中的所有值都对应于数组中自己的元素,例如:如果elementName=数组的索引1内,则是索引处的值。我该怎么做呢

import React, { Component } from 'react';
import './App.css';
import Comp from './Comp';
import Button from './button';

class App extends Component {

  state = {
    CompList: [],
    elementName: ""
  }

  AddComp = event => {

    this.setState(
      {CompList: this.state.CompList.concat(this.state.elementName)}
    );
  }

  render() {

    return (
      <div>
        {this.state.CompList.map(el => <Comp/>)}
        <Button AddComp = {this.AddComp}/>
      </div>
    );
  }
}

export default App;
下面是添加组件的单击按钮。AddComp被发送到此组件

import React from 'react';

const button = props =>{
    return(
        <div>
            <div onClick = {props.AddComp}>
                Clickme
            </div>
        </div>
    );
}

export default button;
这是组件本身,被迭代和显示的组件。我希望我说得够清楚。如果需要,我很乐意发布更多信息

import React from 'react';

const Comp = props =>{
    return(
        <div>
            <input/>
            <div>
                100
            </div>
        </div>
    );
}

export default Comp;
通过对.concat的一些研究,这意味着您需要发送一个数组array1.concatarray2,它将组合它们,这需要一个元素

此外,此.setState{array:array.pushelement}或此.setState{array:array.concatarray2}将不起作用,因为.push和.concat都返回数组的新长度,所以最终将数组设置为数字

因此,要执行您正在寻找的任务,您需要使onClick函数如下所示:

AddComp = event => {
  var tempCompList = this.state.CompList; //this creates a duplicate array
  tempCompList.push(this.state.elementName); //this needs to be separate or we will set a variable to an integer on accident

  this.setState(
    {CompList: tempCompList} //where we set the original array to the duplicate array
  );
}

我很想帮忙,但老实说,我不知道你想做什么:P你能不能把你的问题重新表述一下,或者再解释一下:当然。因此,我有一个组件的动态列表该组件包含一个输入标记。每次单击按钮,它都会添加一个输入组件。在我添加了足够多的组件no limit之后,我想输入字段,然后将所有数据(包括空字符串)保存到它自己的数组中,以供以后使用。我希望这已经足够清楚了。新数组中的数据应该与字段中键入的数据完全相同。