【发布时间】:2021-10-07 04:58:46
【问题描述】:
是什么导致使用 map 方法打印每个数组索引两次。组件是双重渲染的吗?为什么会这样?
import React from 'react';
const data = [
{ id: 1, name: 'john' },
{ id: 2, name: 'peter' },
{ id: 3, name: 'susan' },
{ id: 4, name: 'anna' },
];
const UseStateArray = () => {
const [people,setPeople] = React.useState(data)
return <>
{
people.map((person)=>{
console.log(person);
})
}
</>;
};
我在控制台的输出是:
{id: 1, name: "john"}
{id: 2, name: "peter"}
{id: 3, name: "susan"}
{id: 4, name: "anna"}
{id: 1, name: "john"}
{id: 2, name: "peter"}
{id: 3, name: "susan"}
{id: 4, name: "anna"}
【问题讨论】:
-
无法复制
-
除非您显示完整的minimal reproducible example,否则无法知道您的完整应用程序或包含
<UseStateArray/>的子树被渲染了多少次。只需将此代码放入带有仅返回的 <App/>的最小示例中,就可以完全按照您的期望进行操作,仅渲染一次。 codesandbox.io/s/react-hooks-counter-demo-forked-rbtj6
标签: javascript reactjs use-state array-map