React Hooks 文档说不要在循环、条件或嵌套函数中调用 Hooks。
我知道执行顺序很重要,因此 React 可以知道哪个状态对应于哪个 useState 调用。鉴于此,很明显不能在条件内调用钩子。
但是,如果我们useState
在迭代次数不随时间变化的循环内调用,我看不出有什么问题。这是一个例子:
const App = () => {
const inputs = [];
for(let i = 0; i < 10; i++) {
inputs[i] = useState('name' + i);
}
return inputs.map(([value, setValue], index) => (
<div key={index}>
<input value={value} onChange={e => setValue(e.target.value)} />
</div>
));
}
export default App;
上面这段代码有问题吗?useState
如果在每次渲染时都调用此函数,则在嵌套函数内部调用有什么问题?