2

我的所有组件都有一个基类,它有一个我不想在所有组件中重复的初始化函数。这是我从另一个项目链接的单独包中。

import React = require('react/addons');
abstract class BaseAppComponent<P, S> extends React.Component<P, S> {
    constructor(props?: P, context?: any) {
       super(props, context);
    }
    protected _initialize() {
        ...
    }
}
export = BaseAppComponent;

我的应用程序像这样使用它

import React = require('react/addons');
import MyLib = require('mylib');
class MyApp extends MyLib.BaseAppComponent<AppProps, AppState> {
   constructor(props: AppProps, context: any) {
    super(props, context);
   },
   componentWillMount() {
     this._initialize();
   },
   render() {
      return (<MyAppComponents />);
   }
}

export = MyApp;

我现在的问题是我有一个高阶组合,我想将 MyApp 包裹起来,但我似乎不知道该怎么做。

我试过了。该文件位于 MyLib 项目中。

import React = require('react/addons');
function wrapInAppContainer(AppComponent: any) {
    return (props: any) => {
        return (
            <MyWrapper>
                <AppComponent {...props} />
            </MyWrapper>
        );
    };
}
export = wrapInAppContainer;

所以在 MyApp 中,我在最后添加而不是 export = MyApp,我做了

export = MyLib.wrapInAppContainer(MyApp);

在我的 app.js 文件中,我渲染了应用程序

import React = require('react');
import MyApp = require('./components/<MyApp');

React.render(<MyApp />, document.getElementById('myapp'));

但是当我运行它时,我得到“无法添加属性上下文,对象不可扩展”错误。

我究竟做错了什么?

4

0 回答 0