Describe el error
Actualicé dnd de 7.4.5 a 9.3.2, pero el navegador arroja un error:
Error de intento de importación: "DragDropContext" no se exporta desde "react-dnd". en 9.3.2
Reproducción
Pasos para reproducir el comportamiento:
Comportamiento esperado
Una descripción clara y concisa de lo que esperaba que sucediera.
Capturas de pantalla
Si corresponde, agregue capturas de pantalla para ayudar a explicar su problema.
Escritorio (complete la siguiente información):
Contexto adicional
Agregue aquí cualquier otro contexto sobre el problema.
Hola, DragDropContext
se eliminó desde la versión 9 https://github.com/react-dnd/react-dnd/pull/1439
Hola,
DragDropContext
se eliminó desde la versión 9 # 1439
Oh, gracias
¿Cuál es la ruta de migración ahora que se ha eliminado?
Chicos, ¿hay alguna guía de migración para los cambios importantes en la versión 9.x?
Chicos, ¿hay alguna guía de migración para los cambios importantes en la versión 9.x?
No, puede recordarle al autor que actualice el documento.
Esto es lo que terminé haciendo
- import { DragDropContext } from "react-dnd";
- import HTML5Backend from "react-dnd-html5-backend";
-
- export const withDragDropContext = DragDropContext(HTML5Backend);
+ import * as React from "react";
+ import HTML5Backend from "react-dnd-html5-backend";
+ import { DndProvider } from "react-dnd";
+
+ export const withDragDropContext = <TProps extends {}>(Component: React.ComponentClass<TProps> | React.StatelessComponent<TProps>) =>
+ {
+ return (props: TProps) => (
+ <DndProvider backend={HTML5Backend}>
+ <Component {...props} />
+ </DndProvider>
+ );
+ };
Para aquellos que buscan en Google, esto podría ayudar:
ESTO NO FUNCIONA
import { createDndContext, DndProvider } from "react-dnd";
import Backend from "react-dnd-html5-backend";
// ...
const DndContext = createDndContext(Backend);
// ...
const MyComponent = () => (
<DndProvider backend={Backend} context={DndContext}>
/* ... */
</DndProvider>
);
Repito, eso no funciona
En su lugar, haz esto:
import { createDndContext, DndProvider } from "react-dnd";
import Backend from "react-dnd-html5-backend";
// ...
const DndContext = createDndContext(Backend);
// ...
const myComponent = () => (
const managerRef = useRef(DndContext);
<DndProvider backend={Backend} manager={managerRef.current.dragDropManager}>
/* ... */
</DndProvider>
)
fuentes: código Dnd
Cómo resolver
Comentario más útil
Esto es lo que terminé haciendo