Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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/22.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
Arrays 更改singleinput代码以在react中动态添加更多具有相同功能的输入字段_Arrays_Reactjs_Validation_Dictionary_Input - Fatal编程技术网

Arrays 更改singleinput代码以在react中动态添加更多具有相同功能的输入字段

Arrays 更改singleinput代码以在react中动态添加更多具有相同功能的输入字段,arrays,reactjs,validation,dictionary,input,Arrays,Reactjs,Validation,Dictionary,Input,设置了一个输入字段,它附带了许多进程 这些输入字段用于“添加成员” 如何使此代码正常工作,以便将传统字段添加到react项目中 这是我遇到问题的代码 我的困难在于理解map函数,为动态添加的独立输入字段创建不同的值集(这样它们就不会更改相同的输入字段),以及使代码适应有1个输入字段时的工作情况。 那么 地图(项目、索引) 对不同值作出反应的输入字段 使用的旧代码 if (inviteSent && fields.email.value) { set

设置了一个输入字段,它附带了许多进程

这些输入字段用于“添加成员”

如何使此代码正常工作,以便将传统字段添加到react项目中

这是我遇到问题的代码

我的困难在于理解map函数,为动态添加的独立输入字段创建不同的值集(这样它们就不会更改相同的输入字段),以及使代码适应有1个输入字段时的工作情况。 那么

地图(项目、索引)

对不同值作出反应的输入字段

使用的旧代码


     if (inviteSent && fields.email.value) {
          setInviteSent(false);
          console.log(inviteSent);

但不适用于


     if (inviteSent && fields[holder.length - 1].email.value) {
          setInviteSent(false);
          console.log(inviteSent);

import React,{useffect,useState}来自“React”;
导入“/styles.css”;
导出默认函数App(){
设克隆字段={
电邮:“,
姓名:“,
};
let holder=[CloneFields];
常量[字段,设置字段]=使用状态(持有者);
const emailChange=(e,索引)=>{
持有者[索引]。项目=e.target.value;
设置字段(持有者);
};
让FormInput=[“”];
const[inviteSent,setInviteSent]=useState(false);
useffect(()=>{
if(inviteSent&&fields[holder.length-1].email.value){
设置已发送(假);
控制台日志(已发送);
}
},[inviteSent,字段[holder.length-1].email.value]);
const addother=()=>{
持有者=[持有者+克隆字段];
设置字段(持有者);
};
返回(
你好,代码沙盒
{fields.map((项,索引)=>(
))}
再加一个+
开始编辑,看看神奇的发生!
);
}
沙箱:


任何建议都是非常有用的,因为我似乎无法理解本文中使用的map函数。

不幸的是,您的代码没有什么意义,我不得不修改很多东西,但最终可能您正在寻找类似的东西?由于从未调用过
setInviteSent
,因此我省略了“invite sent”位

const fieldsTemplate={
电邮:“,
姓名:“
};
函数App(){
const[data,setData]=React.useState(()=>[{…fieldsTemplate}]);
常量updateField=(e,字段,索引)=>{
const newData=[…data];
newData[index]={…newData[index],[field]:e.target.value};
setData(newData);
};
const addother=()=>{
const newData=[…data,{…fieldsTemplate}];
setData(newData);
};
返回(
你好,代码沙盒
{data.map((项目,索引)=>(
updateField(e,“名称”,索引)}
/>
updateField(e,“电子邮件”,索引)}
/>
))}
再加一个
);
}
ReactDOM.render(,document.getElementById(“app”)

感谢您的大力帮助,对于代码的草率/重新编写,我深表歉意。你给了我完成项目所需的一切:)
import React, { useEffect, useState } from "react";
import "./styles.css";

export default function App() {
  let CloneFields = {
    email: "",
    name: "",
  };

  let holder = [CloneFields];

  const [fields, setFields] = useState(holder);

  const emailChange = (e, index) => {
    holder[index].item = e.target.value;
    setFields(holder);
  };
  let FormInput = [""];

  const [inviteSent, setInviteSent] = useState(false);

  useEffect(() => {
    if (inviteSent && fields[holder.length - 1].email.value) {
      setInviteSent(false);
      console.log(inviteSent);
    }
  }, [inviteSent, fields[holder.length - 1].email.value]);
  const addAnother = () => {
    holder = [holder + CloneFields];
    setFields(holder);
  };
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      {fields.map((item, index) => (
        <input
          type="name"
          placeholder="Name"
          value={fields[index].item.value}
          onChange={emailChange}
        ></input>
      ))}
      <div onClick={addAnother}>add another +</div>

      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}