在 ReasonReact 中继承 Nextjs App 组件(pages/_app.js)

Posted

技术标签:

【中文标题】在 ReasonReact 中继承 Nextjs App 组件(pages/_app.js)【英文标题】:Inheriting Nextjs App component (pages/_app.js) in ReasonReact 【发布时间】:2019-07-20 14:33:22 【问题描述】:

我正在尝试使用 ReasonReact 在我的 Nextjs 应用程序中实现 React Context API,但被 bucklescript 编译器推断模块名称的方式所吸引。

为了使整个树都可以使用上下文,我需要从 Nextjs App 组件继承。问题是 Next 按照惯例将 pages/_app.js 用于 App 组件继承,但是当我使用 _app.re 作为文件名时,bsb 不会生成名为“App”的 Reason 模块。

事实上,bsb 打印以下消息并忽略该文件:

IGNORED: file _app.re under pages is ignored because it can't be turned into a valid module name. The build system transforms a file name into a module name by upper-casing the first letter

有没有办法告诉 Nextjs 在别处寻找 App 组件?或者也许是一种方法来调整 bsb 只为这个文件?

最后一个似乎有点远,但我不想涉足 javascript,除非我真的必须这样做。

【问题讨论】:

【参考方案1】:

一种可能的解决方案是添加一个具有适当名称的 js 文件,该文件从具有 BuckleScript 支持的名称的已编译模块中重新导出:

// _app.js
export  default  from './next_app.bs.js';

我必须这样做才能让某些功能与 Gatsby 一起使用。见this example。

【讨论】:

谢谢!我们最终使用符号链接进行原型设计,这很有效,但您的方法更适合生产使用。我们遇到了需要针对getInitialProps 的松散定义参数编写一些非常粗糙的绑定。还需要触发和await 子页面的getInitialProps 功能,这将是相当具有挑战性的。我们计划更多地用 Javascript 编写 App 组件和其他 Nextjs 特定代码,为组件和页面本身保存 Reason(这似乎与 ReasonReact 配合得更好)。

以上是关于在 ReasonReact 中继承 Nextjs App 组件(pages/_app.js)的主要内容,如果未能解决你的问题,请参考以下文章

私有成员是不是在 C# 中继承?

在 Python 中继承装饰函数?

如何在 Swift 中继承 UITableViewController

在mongodb中继承一个集合的属性[重复]

在 Mixin 中继承父类属性

为啥我不能在 C# 中继承一个类? [复制]