如何聆听儿童的长度变化反应?
我有一个代码:
const container = useRef();
const [items, setItems] = useState();
useEffect(()=>{
setItems(container.current.children.length);
},[container.current, container.current.children.length])
return(
<div ref={container}>
{
children.map(item => <Item/>)
}
</div>
)
items.length!== childrent。 >项目
相应。但是我会发现无法读取未定义的属性(阅读“孩子”)
我知道为什么会发生这种情况,但是我不知道如何处理它。
I have a code:
const container = useRef();
const [items, setItems] = useState();
useEffect(()=>{
setItems(container.current.children.length);
},[container.current, container.current.children.length])
return(
<div ref={container}>
{
children.map(item => <Item/>)
}
</div>
)
items.length !== children.length
so I want to listen to container.current.children.length
size and when it changes, change items
accordingly. But I get error that Cannot read properties of undefined (reading 'children')
I understand why it's happening, but I don't know how to work around it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,您绝对不应将useref值放在depenty数组中,因为如果值已更改,它不会触发使用效应回调。
您在这里有两个选择:
First of all, you should never put a useRef value inside a depedency array, as it won't trigger the useEffect callback to run if the value has changed.
You have two options here: