【问题标题】:Gatsby <Link> or @reach-router <Link> between static page routes and client-only routes?Gatsby <Link> 或 @reach-router <Link> 在静态页面路由和仅客户端路由之间?
【发布时间】:2020-04-25 20:40:19
【问题描述】:

我已阅读文档 Gatsby &lt;Link&gt;、仅客户端路由和 @reach/router。

我想我很了解它的工作原理。但是,我想知道是否有建议在静态页面和仅限客户端的路由之间进行链接,特别是使用 Gatsby &lt;Link&gt; 与 @reach/router &lt;Link&gt;

比如说,/documentation/* 有静态页面 假设在/app/*有一个带有客户端专用路由的应用程序

这里有4个场景:

  1. 静态到静态 (例如,/documentation/feature-1/documentation/feature-2 的链接): 显然应该在这里使用 Gatsby &lt;Link&gt;

  2. 静态到仅限客户端 (例如,/documentation/feature-1/app/feature-1 的链接): 我应该使用 Gatsby &lt;Link&gt; 还是 @reach/router &lt;Link&gt;?有关系吗?由于目的地是仅限客户端的,我猜 Gatsby &lt;Link&gt; 的预加载不起作用?

  3. 仅客户端到仅客户端 (例如,/app/feature-1 上的链接到 /app/feature-2): 我想我应该为此使用@reach/router &lt;Link&gt;。但是我可以在这里使用 Gatsby &lt;Link&gt; 吗?这样做有什么好处吗?

  4. 仅客户端到静态 (例如,/app/feature-1/documentation/feature-1 的链接): 在这种情况下,我认为我应该使用 Gatsby &lt;Link&gt;,因为目标是静态的并且可能会发生预取。

也许这里的答案很简单,我应该只使用 Gatsby &lt;Link&gt; 来解决所有问题,但我不确定这是否是正确的答案以及如果有的话会产生什么影响。

谢谢!

【问题讨论】:

  • 我也有完全相同的问题......也在这里等待任何帮助。感谢询问
  • 我注意到到达链接组件将根据其来源的路由器组件自动填充 URL,因此我必须为此使用到达路由器,否则我需要手动添加完整链接如果使用 gatsby Link 组件。如果页面目标使用默认的 gatsby 路由配置,我会使用 gatsby 链接。如果我使用reach Link vs gatsby Link,我不知道我是否会错过任何特别的东西。希望我做对了!

标签: gatsby reach-router


【解决方案1】:

更新: 我在媒体上的文章解释here

简而言之,gatsby Link 组件是@reach router link 的包装器,并添加了来自gatsby 的更多有用内容,值得注意的是prefetch,文档here

这就是为什么如果您需要上述 gatsby 的东西,请使用 gatsby Link。否则,请使用@reach router link。对我来说,请使用gatsby Link。 希望这可以帮助。如有错误请指正。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2021-03-17
    • 2018-02-17
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多