在按钮上单击按钮添加新用户

时间:2020-08-26 15:56:51

标签: javascript reactjs use-state

我有以下代码

my code

我有一个“添加”按钮,当我单击“新用户”时,它已添加到数组中。

但是,只有当我单击第二,第三...时,它才第一次起作用。 我应点击多少次将“新用户”添加到数组中。

像这样

enter image description here

我正在使用功能组件和useState挂钩。

请帮助我解决该问题

4 个答案:

答案 0 :(得分:1)

<NewUser />放入setAddNew([...addNew])数组中。检查以下代码:

function add() {
   setAddNew([...addNew, <NewUser />]);
}

答案 1 :(得分:0)

在您的Add.jsx中尝试此代码

import React, { useState } from "react";

function Add() {
  const [addNew, setAddNew] = useState([]);
  function add() {
    // HERE is the change, you need to keep the previous values 
    setAddNew([...addNew, <NewUser />]);
  }

  return (
    <div>
      <button onClick={add}>Add </button>
      <div> {addNew} </div>
    </div>
  );
}
const NewUser = () => {
  return (
    <p>
      <div>New User </div>
    </p>
  );
};

export default Add;

addNew-状态,在这种情况下是数组。

setAddNew-是处理状态的函数,但是您需要处理逻辑

答案 2 :(得分:0)

之所以发生这种情况,是因为您要重置数组的值以将新值推入到它中,您必须使用

setAddNew((old) => [...old, <NewUser />]);

这将复制您的旧数组,并将新元素插入其中

答案 3 :(得分:0)

Add.jsx中需要更改的是:

  function add() {
    setAddNew(<NewUser />);
  }

进入...

  function add() {
    setAddNew([...addNew, <NewUser />]);
  }

上一个函数将自行重置<NewUser/ >,因此仅为1.。

在数组addNew中通过...addNew添加先前的[]状态时,即为[...addNew, <NewUser />],这将采用addNew的先前状态并添加最重要的是<NewUser />

相关问题