React-dnd: Não é possível importar DragDropContext na v9.3.2

Criado em 24 jul. 2019  ·  8Comentários  ·  Fonte: react-dnd/react-dnd

Descreva o bug
Eu atualizei dnd de 7.4.5 para 9.3.2, mas o navegador apresenta um erro:

Tentativa de erro de importação: 'DragDropContext' não é exportado de 'react-dnd'. em 9.3.2

Reprodução

DEMÔNIO

Passos para reproduzir o comportamento:

  1. Vamos para '...'
  2. Clique em '....'
  3. Role para baixo até '....'
  4. Ver erro

Comportamento esperado
Uma descrição clara e concisa do que você esperava que acontecesse.

Capturas de tela
Se aplicável, adicione capturas de tela para ajudar a explicar seu problema.
image

Desktop (preencha as seguintes informações):

  • SO: [por exemplo, iOS]
  • Navegador [última versão do Chrome]
  • Versão [por exemplo, 22]

Contexto adicional
Adicione qualquer outro contexto sobre o problema aqui.

Comentários muito úteis

Isso é o que eu acabei fazendo

- 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 comentários

Olá, DragDropContext foi removido desde a versão 9 https://github.com/react-dnd/react-dnd/pull/1439

Olá, DragDropContext foi removido desde a versão 9 # 1439

oh obrigado

Qual é o caminho de migração agora que foi removido?

Pessoal, existe algum guia de migração para as mudanças mais urgentes na versão 9.x?

Pessoal, existe algum guia de migração para as mudanças mais urgentes na versão 9.x?

Não, você pode lembrar o autor de atualizar o documento.

Isso é o que eu acabei fazendo

- 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 quem está pesquisando no Google, isso pode ajudar:

ISSO NÃO 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, ISSO NÃO FUNCIONA

Em vez disso, faça o seguinte:

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>
)

fontes: código Dnd

Como resolver

Esta página foi útil?
0 / 5 - 0 avaliações