【发布时间】:2020-10-04 18:43:36
【问题描述】:
我需要什么:我需要为每个 div 分配特定的引用,这样我就可以检测到每个特定输入字段之外的点击,但是由于这些项目是通过映射呈现的,所有 div 具有相同的引用。例如,当我单击 item2 的 div 时,它会检测到它是 ref,因此它不会触发警报。
const ref = useRef(null)
const handleClickOutside = (e) => {
if (ref.current && !ref.current.contains(e.target)) {
alert('clicked')
}
}
useEffect(() => {
document.addEventListener('click', handleClickOutside, true)
return () => {
document.removeEventListener('click', handleClickOutside, true)
}
})
myList = ['item1', 'item2', 'item3']
myList.map(item => {
return (
<div key={item._id} ref={ref}>
<input type="text" value={item.value} />
</div>
)
}
myList 代表我的状态并且是动态的
【问题讨论】: