2 回答
TA贡献1906条经验 获得超10个赞
好的,看来我找到了原因。检查后index.js我发现以下内容:
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
看起来 create-react-app 现在包括React.StrictMode在开发模式(而不是生产模式)中双重调用某些方法。
TA贡献1798条经验 获得超3个赞
除了您发现的 StrictMode 问题之外,我认为当您使用ref类似的东西时它会产生副作用,因此您通常需要将其放入useEffect以防止它渲染两次:
import React, { useState, useEffect, useRef } from "react";
const App = () => {
const [count, setCount] = useState(0);
const renders = useRef(0);
useEffect(() => {
// Every time the component has been re-rendered,
// the counter is incremented
console.log("renders: ", renders.current++);
});
return (
<div>
<button onClick={() => setCount(count + 1)}>increment</button>
<div>count: {count}</div>
</div>
);
};
export default App;
添加回答
举报