在父组件的 DOM 层级之外插入组件 onClick 的新实例

Insert a new instance of a component onClick outside DOM hierarchy of the parent component

我想在每次用户点击时创建一个新组件(<CreateLine/>),而不是更新现有DOM节点中的底层元素.

// onClick to create a separate instance of the CreateLine Component and insert it to the Create Area as a Child. 


    <AddCircleSharpIcon onClick={ () => {
    
        ReactDOM.render( 
    
   <CreateLine
   type={type} title={title} line={line}
    color={color}
    data={[...data]} 
    />,
    
document.getElementById("CreateArea")

)

}} 

// 第二次更新仍然无法正常工作。显示 N 行,但具有相同的选项 (type,title,line,color and data)。我怎样才能解决这个问题:)

      const [numberofLines, setnumberofLines] = useState([0]); 
    

        <AddCircleSharpIcon onClick={ () => {
        
      setnumberofLines([...numberofLines, numberofLines.length])

}}
function LineComponent() {

  return (

    <React.Fragment>

      {numberofLines.map( (si) => (

           <CreateLine
   type={type} title={title} line={line}
    color={color}
    data={[...data]} 
    />,
            
      )) }

</React.Fragment> 
  )
}

// 使用 useEffect 因为 im 运行 nextJs SSR.

useEffect( () => {

ReactDOM.render(<LineComponent />, document.getElementById("CreateArea"))

}, [numberofLines])

您可以使用以下代码在每次单击按钮时添加新行。这是一个模拟代码,因此您可以填充剩余的点点滴滴。

function LineComponent() {
  const [numberOfLines, setNumberOfLines] = useState([]);
  const addNewLine = () => {
    setNumberOfLines(prevLines => ([
      ...prevLines,
      {
        ...newData // add your new data here
      }
    ]))
  }
  return (
    <React.Fragment>
      <AddCircleSharpIcon onClick={addNewLine}
      {numberOfLines.map(line => (
        <CreateLine key={line.id} type={line.type} title={line.title} line={line} color={line.color} data={line.data} />
      ))}
    </React.Fragment> 
  )
}

ReactDOM.render(<LineComponent />, document.getElementById("CreateArea"))