reactjs 如何在JSX中连续追加HTML元素?(React)

pkwftd7m  于 2023-10-17  发布在  React
关注(0)|答案(2)|浏览(99)
function sample () {

return (

<div>

<input/>
<input/>
<input/>
.
.
?

<button onClick={ ? ? ? ? }> ADD NEW INPUT <button>

</div>

)}

让我们假装我们正在处理这个代码。在这里,通过点击'添加新输入'按钮标签,我想输入标签保持创建。
我已经寻找了AppendElement()和appendChild(),**但我所能做的只是将一个HTML元素追加到现有的一个元素上。
我想知道我们如何才能建立一个函数或建立一个逻辑来解决这类问题。

wz3gfoph

wz3gfoph1#

您可以查看下面的实现

import React, { useState } from "react";

const Input = () => <input />; //input component

const Component = () => {
  const [inputs, setInputs] = useState([]); //create a state to keep all generated inputs

  return (
    <div>
      //re-render all inputs whenever we have a new input
      {inputs.map((Input, index) => (
        <Input key={index} />
      ))}
      //set a new input into the input list
      <button onClick={() => setInputs([...inputs, Input])}>Generate input</button>
    </div>
  );
};

export function App() {
  return <Component />;
};

the playground

9nvpjoqh

9nvpjoqh2#

const [input, setInput] = useState([<input defaultValue={1} />]);
  return (
    <div>
      {input.map((item, index) => (
        <div key={`input-${index}`}>{item}</div>
      ))}
      <button
        className="block p-5 mx-4 rounded-lg bg-emerald-600"
        onClick={() => {
          setInput([...input, <input defaultValue={input.length + 1} />]);
        }}
      >
        Append
      </button>
    </div>
  );

相关问题