我有一个反应钩子。
该钩子具有子钩子,子钩子在生成时会为自己生成一个 ID。
该 ID 始终是唯一的,因为每次创建新的子钩子时它都会加 1。
const App = () => {
const [ idCounter, setIdCounter ] = React.useState(0);
const genId = () => {
setIdCounter( id => id + 1 );
return `ID-${idCounter}`;
}
const SomeComponent = () => {
const [ componentId, setComponentId ] = React.useState(null);
React.useEffect(() => {
let generatedId = genId();
setComponentId( id => generatedId );
console.log(`generated '${generatedId}'`)
}, []);
return <div>nothing works</div>
}
return <SomeComponent />
};
这会一遍又一遍地循环并记录生成的 id。它到底为什么要这么做?
useEffect()依赖于...什么都没有!!它应该只运行一次,不是吗?
我怎样才能避免这种情况发生?我希望将来能够SomeComponent从内部创建一些。App
守着一只汪
慕尼黑8549860
相关分类