我的所有组件都有一个基类,它有一个我不想在所有组件中重复的初始化函数。这是我从另一个项目链接的单独包中。
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'));
但是当我运行它时,我得到“无法添加属性上下文,对象不可扩展”错误。
我究竟做错了什么?