我在尝试使用React-Konva Stage
渲染Cannot read property 'getPooled' of null at Object.componentDidMount
时,最近遇到以下错误。截至目前,我一直无法使用Konva渲染任何东西。我正在使用react-konva与typescript和webpack。
以下是我的简化代码:
.jsx:
import * as React from "react";
import * as ReactDOM from 'react-dom';
import { Layer, Stage, Rect, Group } from 'react-konva';
class Demo extends React.Component {
public render(): JSX.Element {
return (
<div style={{flex: 5}}>
<Stage width={320} height={320} style={{width: '100%', height: '100%'}}>
<Layer>
<Rect
height={32}
width={32}
x={0}
y={0}
fill={'#bb66bb'}
/>
</Layer>
</Stage>
</div>
);
}
}
我已将该问题追溯到 react-konva源代码中的此行
var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();
我(我相信)追溯到ReactUpdates
中的以下代码(react-dom
的一部分)。
var ReactUpdates = {
/**
* React references `ReactReconcileTransaction` using this property in order
* to allow dependency injection.
*
* @internal
*/
ReactReconcileTransaction: null,
...ommitted code here for brevity
};
module.exports = ReactUpdates;
显然,引用的属性设置为null
...我只是不明白为什么react-konva
引用了这个属性,或者我只是误读了什么&# 39;发生了什么。有任何想法吗?
(另外,我使用v. 1.1.4 of react-konva
和v. 15.5.4 of react-dom
)
答案 0 :(得分:2)
发现问题!这是webpack.config.js
externals: {
"react": "React",
"react-dom": "ReactDOM",
"canvas": "canvas"
}
所有人都需要被禁用,它就像一个魅力(不幸的是,不知道为什么)。