在 React 中向 DOM 添加新元素

Posted

技术标签:

【中文标题】在 React 中向 DOM 添加新元素【英文标题】:Add new element to DOM in React 【发布时间】:2021-02-18 04:13:17 【问题描述】:

我是 React 新手,我尝试在 onClick 时创建向 DOM 添加一个新元素。所以我和国家一起玩。如下:

const [number, setNumber] = useState(1);
const [item, setItem] = useState(() => [id: number,task: `Task $number`]);

const increaseItem = () => 
    setNumber(number + 1)
    console.log(number)
    setItem([...item, id: number, task: `Task $number`])
    console.log(item)

但是当我在 useState 中推送数组时遇到了一个问题,数组的第一个元素被复制了两次。这里是数组的结果:

4 //result of the number

/* Result of item */
0: id: 1, task: "Task 1"
1: id: 1, task: "Task 1"
2: id: 2, task: "Task 2"
3: id: 3, task: "Task 3"

你能告诉我如何解决这个问题的正确方法吗?谢谢。

【问题讨论】:

setState 异步发生,因此您应该执行const newNumber = number + 1; setNumber(newNumber); setItem([...item, id: newNumber, task: "Task " + newNumber]); 之类的操作,以便获得您期望的值。 4 //数字的结果 那4是什么?是您将number 的初始状态设置为的吗? @codemonkey 是的,这是状态 number 的结果 【参考方案1】:
const [number, setNumber] = useState(1);
const [item, setItem] = useState([
    id: number,
    task: `Task $number`
]);

const increaseItem = () => 
    const newNumber = number + 1;
    setNumber(newNumber);
    console.log(number)
    setItem([...item, 
        id: newNumber,
        task: "Task " + newNumber
    ]);
    console.log(item)


increaseItem();

【讨论】:

以上是关于在 React 中向 DOM 添加新元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ember.js 中向 DOM 添加特定元素?

如何在 React native redux 的 reducer 中向数组添加元素?

在 React Native 中向数组添加新对象

如何在 React 组件中向 Apollo 客户端添加新的授权标头?

如何在 React Native 中向图像添加文本?

react拖拽添加新组件