javascript - 装饰器未将渲染功能应用于 meteor + React 应用程序中的类原型(prototype)

标签 javascript reactjs meteor decorator

我有一个 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/

相关文章:

javascript - JS中如何按公共(public)元素对子数组进行分组

javascript - 关闭状态 Canvas 被删除

javascript - 有什么方法可以使用 React-Intl 访问当前语言环境吗?

reactjs - 无法读取渲染循环中未定义的属性

javascript - 使用 'this' 引用与meteor.template.rendered

javascript - 如何从异步调用返回响应?

javascript - Jquery改变背景大小和图像src

javascript - 如何从 JSON 文件在 Gatsby 中创建页面?

javascript - 在 Meteor 的模板渲染函数中访问父数据上下文

javascript - meteor 自动成型 : form with id "asdf" needs either "schema" or "collection" attribute