3

我最近在尝试Stage使用 React-Konva 渲染时遇到以下错误:Cannot read property 'getPooled' of null at Object.componentDidMount。到目前为止,我无法使用 Konva 渲染任何东西。我正在使用带有 typescript 和 webpack 的 react-konva。以下是我的简化代码:


.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();ReactUpdatesreact-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要引用这个属性,或者我只是误读了正在发生的事情。有任何想法吗?(另外,我正在使用v. 1.1.4 of react-konvaand v. 15.5.4 of react-dom

4

1 回答 1

3

发现问题!里面有东西webpack.config.js

externals: {
    "react": "React",
    "react-dom": "ReactDOM",
    "canvas": "canvas"
}

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

于 2017-08-02T23:54:47.837 回答