我有一个 decorator
将渲染函数应用于 react 组件的原型(prototype),但是,当我在浏览器中运行该应用程序时,出现以下错误。
警告:App(...):在返回的组件实例上找不到“render”方法:您可能忘记定义“render”。
这是装饰器代码
export function App(setup) {
return function(target) {
target.prototype.render = () => (
<MuiThemeProvider muiTheme={getMuiTheme(setup.config.theme)}>
<IntlProvider locale={setup.config.locale}>
<Provider
store={setup.config.state.store ?
setup.config.state.store
:
initializeRedux(setup.config.state.reducers, setup.config.state.initialState)}
>
<Router>
<div>
{setup.pages.map((page, i) =>
<Route key={i} {...page} />
)}
{setup.render ? setup.render() : ""}
</div>
</Router>
</Provider>
</IntlProvider>
</MuiThemeProvider>
)
return target;
}
}
和 react 组件
@DimApp({
pages: [
{ path: '/', component: HomePage, children: [] }
],
config: {
theme,
locale: 'en',
state: {
store
}
}
})
export default class App extends Component {
constructor(props) {
super(props);
}
}
最佳答案
您可能没有包含合适的 babel 插件(babel-plugin-transform-decorators-legacy
)。
为了启用它,您应该安装软件包并将其添加到您的配置中:
meteor npm i -S babel-plugin-transform-decorators-legacy
并将其添加到您的 package.json
或 .babelrc
,
{
"plugins": ["babel-plugin-transform-decorators-legacy"]
}
也在此GitHub issue中注明.
关于javascript - 装饰器未将渲染功能应用于 meteor + React 应用程序中的类原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49712724/