gpt4 book ai didi

javascript - 在循环内创建 refs

转载 作者:行者123 更新时间:2023-12-04 12:38:20 25 4
gpt4 key购买 nike

我正在尝试根据输入数组的长度创建多个引用。

export default function test(props) {
const numRefs = props.data.length;
let [refs, setRefs] = useState([]);

for (let i = 0; i < numrefs; i++) {
let ref = useRef(null);
setRefs(result => [...result, ref]);
}


return (
<div>
// Then I want to return numRefs number of divs each with a ref = one of ref from refs array
<div ref = {}></div>
</div>
)
}

React 不允许你在循环中使用钩子(Hook),我收到了错误 ->

' React Hook "useRef"可能会被执行多次。可能是因为它是在循环中调用的。 React Hooks 必须在每个组件渲染中以完全相同的顺序调用

有可能实现这一目标吗?

最佳答案

利用回调方法在循环中分配 refs。您不需要 useRef 的多个实例。您可以创建一个引用并将所有引用存储到其中的 div

export default function test(props) {
const numRefs = props.data.length;
let [refs, setRefs] = useState([]);
let divRef = useRef({});


return (
<div>
{Array.from(new Array(20)).map((_, i) => <div ref = {ref => divRefs.current[i] = ref}></div>)}

</div>
)
}

关于javascript - 在循环内创建 refs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62036453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com