React-dnd: No se puede importar DragDropContext en v9.3.2

Creado en 24 jul. 2019  ·  8Comentarios  ·  Fuente: react-dnd/react-dnd

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

DEMONIO

Pasos para reproducir el comportamiento:

  1. Ir a '...'
  2. Haga clic en '....'
  3. Desplácese hacia abajo hasta '....'
  4. Ver error

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.
image

Escritorio (complete la siguiente información):

  • SO: [p. Ej., IOS]
  • Navegador [última versión de Chrome]
  • Versión [por ejemplo, 22]

Contexto adicional
Agregue aquí cualquier otro contexto sobre el problema.

Comentario más útil

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>
+     );
+ };

Todos 8 comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones