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
Passos para reproduzir o comportamento:
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.
Desktop (preencha as seguintes informações):
Contexto adicional
Adicione qualquer outro contexto sobre o problema aqui.
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
Comentários muito úteis
Isso é o que eu acabei fazendo