React-dnd: v9.3.2 无法导入 DragDropContext

创建于 2019-07-24  ·  8评论  ·  资料来源: react-dnd/react-dnd

描述错误
我将 dnd 从 7.4.5 升级到 9.3.2,但浏览器抛出错误:

尝试导入错误:“DragDropContext”未从“react-dnd”导出。 在 9.3.2

再生产

恶魔

重现行为的步骤:

  1. 去 '...'
  2. 点击 '....'
  3. 向下滚动到“....”
  4. 查看错误

预期行为
对您期望发生的事情的清晰简洁的描述。

截图
如果适用,请添加屏幕截图以帮助解释您的问题。
image

桌面(请填写以下信息):

  • 操作系统:[例如iOS]
  • 浏览器 [ chrome 上一版]
  • 版本 [例如 22]

附加上下文
在此处添加有关该问题的任何其他上下文。

最有用的评论

这就是我最终做的

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

所有8条评论

嗨, DragDropContext自版本 9 以来已被删除https://github.com/react-dnd/react-dnd/pull/1439

嗨, DragDropContext自版本 9 以来已被删除 #1439

哦谢谢

现在已删除此迁移路径是什么?

伙计们,是否有针对 9.x 版本中的重大更改的迁移指南?

伙计们,是否有针对 9.x 版本中的重大更改的迁移指南?

不,您可以提醒作者更新文档。

这就是我最终做的

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

对于那些在谷歌上搜索的人,这可能会有所帮助:

这不起作用

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

我再说一遍,这行不通

而是这样做:

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

来源: Dnd 代码

怎么解决

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

djeremh picture djeremh  ·  3评论

dwjohnston picture dwjohnston  ·  3评论

user1736 picture user1736  ·  3评论

bebbi picture bebbi  ·  3评论

gocreating picture gocreating  ·  4评论