仅仅声明useRef就会导致我的组件重新呈现。这是人们所期望的行为吗?如果是,简短的解释会有所帮助。
样本组件代码
App.js
<><CustomInput /></>
CustomInput.js
function CustomInput(props) {
console.log("This is rendering twice");
const testRef = useRef(null);
return <input type="text" />
}
原因不是useRef
,而是项目中index.js文件中的<React.StrictMode>
。
发生这种情况的原因是CCD_ 3的一个有意特征。它只在开发模式下发生,应该有助于在渲染阶段发现意外的副作用。
去掉包装<React.StrictMode>
将解决开发模式中的问题。