在 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)的主要内容,如果未能解决你的问题,请参考以下文章