reactjs - 尝试在 Electron/React/Typescript 项目中使用 react-dnd 失败
问题描述
帮助!!
我正在尝试将 react-dnd 添加到我的 [即将完成] Electron/React/Typescript 项目中,基于此样板:https ://github.com/Robinfr/electron-react-typescript
无论我似乎在提供程序中包装了什么,从应用程序一直到上面我希望 dnd 的组件,我都会得到相同的错误:Object(...) is not a function
Uncaught TypeError: Object(...) is not a function
at DndProvider (DndProvider.js:54)
at renderWithHooks (react-dom.development.js:16240)
at updateFunctionComponent (react-dom.development.js:18327)
at updateSimpleMemoComponent (react-dom.development.js:18265)
at updateMemoComponent (react-dom.development.js:18168)
at beginWork$1 (react-dom.development.js:20222)
at HTMLUnknownElement.callCallback (react-dom.development.js:337)
at Object.invokeGuardedCallbackDev (react-dom.development.js:386)
at invokeGuardedCallback (react-dom.development.js:441)
at beginWork$$1 (react-dom.development.js:2573
这是我将应用程序包装在 app.tsx 中的方式
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';
// https://react-dnd.github.io/react-dnd/docs/api/dnd-provider
import { HTML5Backend } from 'react-dnd-html5-backend'
import { DndProvider } from 'react-dnd'
import Application from './containers/Application';
const themeObj = require('./themes/yellowed.json');
// https://material-ui.com/components/typography/
// https://material-ui.com/customization/default-theme/
// https://kitson-broadhurst.medium.com/quickly-set-up-a-theme-in-material-ui-and-access-it-in-your-components-ba0565304887
const theme = createMuiTheme(themeObj);
// Create main element
const mainElement = document.createElement('div');
mainElement.style.userSelect = 'none';
document.body.appendChild(mainElement);
// Render components
const render = (Component: () => JSX.Element) => {
ReactDOM.render(
<DndProvider backend={HTML5Backend}>
<AppContainer>
<ThemeProvider theme={theme}>
<Component />
</ThemeProvider>
</AppContainer>
</DndProvider>
, mainElement
);
};
render(Application);
我已经尝试将所有不同的元素一直包装到我希望进行 DnD 的元素,但我得到了同样的错误
我已经深入跟踪执行到反应,直到我无法理解发生了什么,它似乎找不到反应根容器,然后在试图刷新同步回调队列时死掉......
function unbatchedUpdates(fn, a) {
var prevExecutionContext = executionContext;
executionContext &= ~BatchedContext;
executionContext |= LegacyUnbatchedContext;
try {
return fn(a);
} finally {
executionContext = prevExecutionContext;
if (executionContext === NoContext) {
// Flush the immediate callbacks that were scheduled during this batch
flushSyncCallbackQueue();
}
}
}
解决方案
推荐阅读
- javascript - Core(JS) - 如何将上下文从前向导航传递到选项卡视图?
- php - 如何在 FPDF 中导入生成的 GD 图像
- angular - Angular 订阅仅在组件加载时触发
- .net-core - .Net Core Identity 未登录
- json - 无法使用 WebHelpers 从 json 填充 excel 电子表格
- flask - 尝试使用烧瓶邮件发送邮件时未加载本地主机
- ruby-on-rails - 如何在 Ruby on Rails 应用程序中从倾斜注册引擎?
- kibana-6 - Kibana 的错误代码为 503
- c - 使用信号量同步来自不同进程的线程
- javascript - 如何使用 npm 将自定义模块导入 babel-jest 测试?