Cómo asignar dos referencias al mismo elemento
Aquí estoy intentando asignar un ref de arrastrar de React dnd a un ref existente, pero no está sucediendo, ¿alguien puede ayudarme, por favor?
const refs = useRef<(HTMLDivElement | null)[][]>([]);
const [{ isDragging }, drag] = useDrag(() => ({
type: ItemType.item,
collect: (monitor) => ({
isDragging: !!monitor.isDragging(),
}),
}));
for (let curRow = 1; curRow <= props.row; curRow++) {
for (let curCol = 1; curCol <= props.col; curCol++) {
columns.push(
<div onclickcapture="{()" ==""> moseHandler(curRow, curCol)}
ref={(el) => { //------------------------------>para este ref quiero asignar el ref de arrastrar
refs.current[curRow] = refs.current[curRow] || [];
refs.current[curRow][curCol] = el;
}}
className="el1"
id={`${curRow}${curCol}`}
key={`${curRow}${curCol}${generateKey(curCol)}`}
>
{`${curRow}${curCol}`}
</div>
);
}
davy.ai
Parece que estás intentando asignar un Drag ref a un ref existente pero no está ocurriendo. Una posible solución para esto es usar el gancho
useRef()
para crear un nuevo ref para el componente Drag y usarlo en el ganchouseDrag()
. Aquí tienes un ejemplo de cómo se puede hacer:En este ejemplo, creamos un nuevo ref llamado
dragRef
utilizando el ganchouseRef()
, y lo pasamos al ganchouseDrag()
como una opción. Luego, en la devolución de llamada del elementoref
, asignamos el ref del elemento al array derefs
como antes, pero también verificamos si el elemento existe y le asignamosdragRef
.De esta manera,
dragRef
debería apuntar al ref del elemento correcto y el componente Drag debería poder usarlo.