React函数组件中如何使用数组状态?
How to use array state in React function component?
我正在尝试为 React 功能组件使用数组状态。
这是我试过的代码。
const inputLabel = Array(5).fill(React.useRef(null));
const [labelWidth, setLabelWidth] = React.useState(0);
React.useEffect(() => {
inputLabel.map((label, i) => {
setLabelWidth({...labelWidth, [i]: label.current.offsetWidth});
});
}, []);
这是我试过的,但是显示错误
React Hook React.useEffect has missing dependencies: 'inputLabel' and 'labelWidth'
寻求 React 专家的帮助。谢谢!
您提到的错误可以通过几种方式修复 -
但无论如何这不会破坏您的应用程序,只是为了警告您。
不管怎样,效果中调用的setLabelWidth好像是将LabelWidth设置为一个对象,而不是一个数组。
综上所述,在这种情况下你根本不需要使用钩子,你可以在lop中使用{ .push() } js数组方法
for(let i = 0; i < InputLabel.length ; i++) {
LabelWidth.push(InputLabel[i])
}
但是如果你仍然想用钩子来做这件事并避免错误,我建议类似的东西
const [labelWidth, setLabelWidth] = React.useState([]);
React.useEffect(() => {
if (labelWidth.length === 0) {
const inputLabel = Array(5).fill(React.useRef(null));
inputLabel.map((label) => {
setLabelWidth([ ...labelWidth, label.current.offsetWidth ]);
}
});
}, [labelWidth, setLabelWidth]);
我正在尝试为 React 功能组件使用数组状态。
这是我试过的代码。
const inputLabel = Array(5).fill(React.useRef(null));
const [labelWidth, setLabelWidth] = React.useState(0);
React.useEffect(() => {
inputLabel.map((label, i) => {
setLabelWidth({...labelWidth, [i]: label.current.offsetWidth});
});
}, []);
这是我试过的,但是显示错误
React Hook React.useEffect has missing dependencies: 'inputLabel' and 'labelWidth'
寻求 React 专家的帮助。谢谢!
您提到的错误可以通过几种方式修复 -
但无论如何这不会破坏您的应用程序,只是为了警告您。
不管怎样,效果中调用的setLabelWidth好像是将LabelWidth设置为一个对象,而不是一个数组。
综上所述,在这种情况下你根本不需要使用钩子,你可以在lop中使用{ .push() } js数组方法
for(let i = 0; i < InputLabel.length ; i++) {
LabelWidth.push(InputLabel[i])
}
但是如果你仍然想用钩子来做这件事并避免错误,我建议类似的东西
const [labelWidth, setLabelWidth] = React.useState([]);
React.useEffect(() => {
if (labelWidth.length === 0) {
const inputLabel = Array(5).fill(React.useRef(null));
inputLabel.map((label) => {
setLabelWidth([ ...labelWidth, label.current.offsetWidth ]);
}
});
}, [labelWidth, setLabelWidth]);