首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享北极星导航url刷新页面,从而导致闪烁

共享北极星导航url刷新页面,从而导致闪烁
EN

Stack Overflow用户
提问于 2022-09-08 14:12:17
回答 1查看 117关注 0票数 0

我试图在nextjs中使用shopify polaris库进行导航。

代码语言:javascript
复制
items={[{    
      label: "Shipments",
      icon: ShipmentMajorMonotone,
      url: "/shipments",
 }]}

单击<Navigation/>中的任何链接后,它将触发一个完整的重新加载。

"url“部分会导致页面重新加载,从而产生闪烁效果。我跟踪了这个解决方案,但问题依然存在。

我还尝试过使用next/路由器方法。它有时确实表现得很顺利,但并不能完全解决问题。

EN

回答 1

Stack Overflow用户

发布于 2022-09-09 14:01:58

我找到了解决办法。这一个帮了我很多。但就像在打字稿里一样,我会用JS来解释。

问题在于北极星如何拥有它的url:"/demo“类型的url。在诸如导航这样的组件中,我们不能使用路由器或链接(从next/ Link )来阻止页面重新加载。

北极星将其url:"/demo"转换为<a>标记。我们需要将那些<a>标记包装在<Link>上。

为此,我们在<AppProvider> (如<AppProvider linkComponent={LinkWrapper}> )中添加了<AppProvider linkComponent={LinkWrapper}>。在这里,所有链接组件都将发送到我们的自定义LinkWrapper方法。

整个代码如下所示:

代码语言:javascript
复制
import { useRouter } from "next/router";
import { AppProvider, Navigation } from "@shopify/polaris";
import Link from "next/link";
export default function DraftOrderNav() {
const router = useRouter();


//method which wraps <Link> around <a> 
function LinkWrapper({ children, url, ...rest }) {     
  return (
    <Link href={url} passHref as={url}>
      <a {...rest}>{children}</a>
    </Link>
  );
}
return (
<>
  //Wrap this around your polaris component
  <AppProvider linkComponent={LinkWrapper}> 
    <Navigation location={router.pathname}>
      <Navigation.Section
        items={[
          {
            url: "/DraftOrderReport/draft-order-report",
            .....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73650511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档