Meu aplicativo está funcionando bem em meu ambiente local, mas quando implanto no servidor, o console imprime o erro: 'Violação invariável: Esperado localizar contexto de arrastar e soltar' ao implantar no servidor.
Não tenho ideia do que está errado. Você poderia me dar alguns conselhos sobre o que pode ser a causa raiz?
Minha versão de nó local é 8.11.3. E eu uso 8.11.3 no servidor para construir e um servidor expresso para servir os arquivos estáticos no ambiente de nó de nuvem padrão (v6.7.0).
Estou usando:
"react-dnd": "^ 9.0.1"
"react-dnd-html5-backend": "^ 9.0.0"
"react-dnd-touch-backend": "^ 9.0.2"
Eu atualizei meus pacotes para o mais recente e o erro ocorre em meu ambiente local.
É porque eu tenho um ^ e uso yarn em local, mas npm na nuvem para construir, então tenho versões de pacote diferentes em local e dev.
E quando eu uso 9.3.3 e 9.3.2, recebo o mesmo erro: 'Invariant Violation: Expected drag drop context find. Perdi o contexto.
E 9.2.1 está bom.
+1 eu estou entendendo isso também
O ambiente se parece com:
"react": "^16.8.6",
"react-dnd": "^9.3.4",
"react-dnd-html5-backend": "^9.3.4",
"react-dom": "^16.8.6",
Isso provavelmente significa que você tem DndProvider
envolvendo um componente muito baixo em sua árvore de componentes.
Você resolveu isso? Eu tive o mesmo problema e descobri que tinha várias bibliotecas react-dnd de diferentes versões empacotadas em meu aplicativo. Espero que isso ajude alguém.
Eu também estou enfrentando o mesmo problema. Alguém encontrou a solução, por favor, compartilhe.
Eu não estava exportando <DndProvider />
. Depois de fazer isso, tudo funcionou bem.
você deve embrulhar o componente do arquivo de teste assim:
<DndProvider backend={HTML5Backend}>
<Component />
</DndProvider>
você deve embrulhar o componente do arquivo de teste assim:
<DndProvider backend={HTML5Backend}> <Component /> </DndProvider>
Eu realmente gostaria que essas informações estivessem disponíveis nesta página http://react-dnd.github.io/react-dnd/docs/overview.
Caso contrário, os usuários terão que percorrer toda uma implementação do tabuleiro de xadrez para encontrar isso.
Estou recebendo o erro Expected drag drop context
também. Para mim, isso funciona apenas se DndProvider
for o nó pai imediato do componente que usa useDrag
. Ele funciona com uma versão mais antiga (9.0.0). No entanto, a dica
Isso deve ser montado próximo ao topo de nosso aplicativo (significando o
DndProvider
)
está definitivamente errado.
@markusmauch
Obrigado - isso me salvou de uma grande dor de cabeça. Sim, a documentação definitivamente não é precisa aqui.
Comentários muito úteis
você deve embrulhar o componente do arquivo de teste assim:
<DndProvider backend={HTML5Backend}> <Component /> </DndProvider>