【问题标题】:How to routing between packages in workspace using react-router?如何使用 react-router 在工作区中的包之间路由?
【发布时间】:2021-02-12 10:04:33
【问题描述】:
我正在为我的 monorepo 项目使用 lerna 和 yarn 工作区。我已经有一个使用 React 的包名 ProjectA。我想为这个 ProjectA 包创建一个登录页面,它也使用 React。
我希望什么时候可以部署这个项目。登录页面使用域landing.projecta.com,ProjectA 使用域projecta.com
但我不知道如何在登录页面上创建一个链接,该链接重定向到 ProjectA 的主路由。我可以为此使用 react-router 吗?
谢谢!
【问题讨论】:
标签:
reactjs
react-router
yarnpkg
lerna
【解决方案1】:
在上述情况下,您应该(恕我直言)重定向到域,因为这两个系统(可能)应该是独立的,对吧?
如果您确实共享包中的代码,您可以执行以下操作:
使用下面的包结构,
packages/
- project-a
- src/Home.jsx
- landing
- src/Home.jsx
您可以使用 @your-scope/project-a 中的函数在 @your-scope/landing 源中创建完整的 URL。
// landing/src/Home.jsx
import {getFullAppUrl} from '@your-scope/project-a/Home.jsx'
...
<Link to={{ pathname: getFullAppUrl() }} target="_blank" />
...
// project-a/src/Home.jsx
export function getFullAppUrl() {
// your code here preparing the URL
}