我想声明与userInputs数组的长度相同的useState钩子数。我想把它们命名为userInput0,userInput1,userInput2,,,userInputN但是“const [userInput+index.toString(),setUserInput] = useState('')”会抛出错误。我该怎么解决?
'use client';
import { useState } from 'react';
userInputs = ['hoge', '123', 'aaa'];
userInputs.array.forEach((element, index) => {
const [userInput+index.toString(), setUserInput] = useState('')
});
3条答案
按热度按时间iq3niunx1#
我认为尽管这是你可能会做的事情,但我不建议你这样做,因为它可能会导致意想不到的行为
有一些规则,以便使用钩和你是打破其中一个
不要在循环、条件或嵌套函数中调用Hooks
https://legacy.reactjs.org/docs/hooks-rules.html
我建议您创建具有自己的状态的组件,并使用数组渲染3个不同的组件与它们的状态
ahy6op9u2#
要动态声明多个useState hook,名称如“userInput0”,“userInput1”,“userInput2”等,你不能直接将变量名串联成字符串。但是,您可以使用对象或数组来存储状态值来实现这一点。下面是一个示例,说明你可以如何完成它:
0ve6wy6x3#
如果你想动态地创建变量,比如
var0
,var1
,var2
,那么只需要使用一个数组。