无法使用React-Konva呈现内容

时间:2017-07-31 01:17:50

标签: reactjs react-dom konvajs react-konva

我在尝试使用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-konvav. 15.5.4 of react-dom

1 个答案:

答案 0 :(得分:2)

发现问题!这是webpack.config.js

中的内容
externals: {
    "react": "React",
    "react-dom": "ReactDOM",
    "canvas": "canvas"
}

所有人都需要被禁用,它就像一个魅力(不幸的是,不知道为什么)。