是什么导致使用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"}
如果您使用代码查看这个codesandbox示例,您可以在console选项卡上看到console日志只发生一次https://codesandbox.io/s/nervous-hill-0k32k?file=/src/App.js
最有可能的是,您在其上呈现此组件的父组件正在导致重新呈现,这就是为什么控制台会出现这种情况。日志显示两次。
我发现这个stackoverflow答案非常有用,可以跟踪是什么属性更改导致父组件重新渲染跟踪为什么React组件被重新渲染
问题内容: 具有以下映射: 如果我添加以下代码,即使它与映射不匹配(丢失)也可以完美地工作,但ES不会抱怨。 如果我添加以下条目,它也可以工作。 似乎该映射未对我添加的元素生效。尝试映射类型时我做错了什么? 问题答案: 这是Elasticsearch的默认行为,在大多数情况下是理想的。但是对于您的情况,如果您不想允许索引未在映射中定义的字段,则需要更新映射并将其属性设置为。基本上,您的映射定义应如
我正在使用Dozer在Document类和DocumentManagementBean类之间进行映射,这都是我自己制作的。两者都有一个Joda DateTime类型的属性,即getter和setter,名为dateAdded。 当文档对象d的属性dateAdded=x时,调用映射器。map(d,DocumentManagementBean.class)所有字段都会正确地自动映射(因为我完全控制代码
根据以下文档:http://testng.org/doc/documentation-main.html “如果测试类上有一个方法tearDown(),那么在每个测试方法之前和之后都会调用它”(JUnit 3) 我使用的是JUnit版本:3.8.1 这里的这个是在我的测试之前运行的,但我希望它会在测试之后。它在测试后没有运行: 我可以通过将第一行更改为: 但是,下一个类(下面)的表示法与第一个类完
我有一个具有两个外键和多对一关联(到表、检查点和设置)的表选项:db Schema。 完整堆栈跟踪是: org.springframework.dao.DataIntegrityViolationException:不能执行语句;SQL[N/A];约束[null];嵌套异常是org.hibernate.exception.constraintViolationException:在org.spri
我能够在iothub消息(从云到设备的消息)上打开一个侦听器,但我无法订阅direct方法。我尝试使用mqtt支持,而不是iothub库 我已经跟踪https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-direct-methods#mqtt但一定有一个小细节我还没有设法做到正确 这是我的代码(python)
我有以下代码,它应该从modelService返回orgId,但不能使用可选的 此代码不起作用总是返回 但是下面的代码工作得很好,不知道上面的代码有什么问题 其中总是,这是正确的代码,我只更改了一些变量名
我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它
当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。