Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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/26.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 如何使用react显示嵌套元素_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 如何使用react显示嵌套元素

Javascript 如何使用react显示嵌套元素,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在创建动态元素,当用户单击add时,我正在创建另一组元素 一旦我创建了元素,我就有一个选择选项,所以在选择特定的选项时,我会再创建一个字段 我有名字和选择年龄两个元素,其中年龄为>18和18,然后将状态设置为该值并显示新的输入字段 但它并没有像预期的那样工作,当我在第一组元素中选择>18并选择时,我建议要么通过更新现有inputHolder来跟踪年龄输入,要么通过单独的状态来跟踪。是这样的: 更改年龄后更新 const onChangeAge = (e, ind) => {

我正在创建动态元素,当用户单击
add
时,我正在创建另一组元素

一旦我创建了元素,我就有一个选择选项,所以在选择特定的选项时,我会再创建一个字段

我有
名字
选择年龄
两个元素,其中年龄为
>18
18,然后将状态设置为该值并显示新的输入字段


  • 但它并没有像预期的那样工作,当我在第一组元素中选择
    >18
    并选择
    时,我建议要么通过更新现有
    inputHolder
    来跟踪年龄输入,要么通过单独的状态来跟踪。是这样的:

    更改年龄后更新

    const onChangeAge = (e, ind) => {
        console.log(e.target.value);
        let val = e.target.value;
        console.log(typeof ind, ind, typeof val);
        let inputHolderCopy = [...inputHolder];
        setindexVal(ind);
        inputHolderCopy = inputHolderCopy.map((data) => {
          if (data.id === ind + 1) {
            return { ...data, currentSelectedAge: val };
          }
          return data;
        });
        setinputHolder(inputHolderCopy);
    
        if (val === "<=18 ") {
          console.log("Hello");
          setageVal(true);
        } else {
          setageVal(false);
        }
      }
    
    const onchangage=(e,ind)=>{
    console.log(如target.value);
    设val=e.target.value;
    console.log(类型为ind,ind,类型为val);
    让inputHolderCopy=[…inputHolder];
    setindexVal(ind);
    inputHolderCopy=inputHolderCopy.map((数据)=>{
    如果(data.id==ind+1){
    返回{…数据,currentSelectedAge:val};
    }
    返回数据;
    });
    setinputHolder(inputHolderCopy);
    
    如果(val=="在
    select
    元素的
    onChange
    处理程序中,您没有更新该输入的年龄。以下是您需要在代码中进行的几项更改以解决问题。嘿,在您的情况下,我已经尝试过它,它工作正常,但是如果我选择了其他内容,我如何从状态中删除它?您的意思是,如果您选择了不同的年龄输入应该删除?我已经更新了代码。在每个对象中跟踪似乎更好。检查沙盒
    {onChangeAge && li.currentSelectedAge === "<=18" && (
                  <div>
                    <input
                      type="text"
                      name={`data[${index}].idCred`}
                      id="idCred"
                      placeholder="ID"
                      ref={register({ required: "ID is required" })}
                    />
    
                    <br></br>
                    <label htmlFor="idCred">Name</label>
                  </div>
                )}