Reactjs 如何为useState创建动态函数名?
我试图从一个名称数组中添加Reactjs 如何为useState创建动态函数名?,reactjs,react-hooks,use-state,Reactjs,React Hooks,Use State,我试图从一个名称数组中添加useState钩子,但它似乎没有按照我认为的方式工作。 有人知道我如何才能做到这一点吗 let f = { get: { }, set: { } }; for (let field of fields) { const [f.get[field], f.set[field]] = useState(menu[field]); } 我在atm机上的错误是: imports/ui/admin/Menu.jsx:128:10: /home/csi
useState
钩子,但它似乎没有按照我认为的方式工作。
有人知道我如何才能做到这一点吗
let f = {
get: { },
set: { }
};
for (let field of fields) {
const [f.get[field], f.set[field]] = useState(menu[field]);
}
我在atm机上的错误是:
imports/ui/admin/Menu.jsx:128:10: /home/csi/csi/imports/ui/admin/Menu.jsx: Unexpected token, expected "," (128:10)
126 | };
127 | for (let field of fields) {
> 128 | const [f.get[field], f.set[field]] = useState(menu[field]);
| ^
129 | }
130 |
131 | const submit = e => {
提前谢谢 首先,React hook不应在条件语句和循环中使用,因为它们依赖于统一的、确定性的调用顺序。签出以获取有关该主题的更多信息 此外,
useState(menu[field])
返回状态变量和setter函数。您的代码显然无法工作,因为它在语法上不正确。通过将整个状态存储在单个对象中,可以使用动态变量名:
const [state, setState] = useState({property: value});
const alterState = (property, value) => {
setState(state => {...state, [property]: value});
}
或者使用
减速机
只有在确保每次渲染组件时以相同顺序调用挂钩时,才能在循环内使用useState。这就是允许React在多个useState和useEffect调用之间正确保留挂钩状态的原因
查看此ans以获得更好的说明您不能用
const
声明对象的字段,您可以做的是const[temp1,temp2]=useState(菜单[field]);f、 get[field]=temp1;f、 设置[字段]=temp2代码>但是我建议您重新考虑您的方法,并在单个状态变量中存储一个值数组