Compound Link 使用 Gatsby Link 通过 Props 的目的地
Compound Link Destination Using Gatsby Link Via Props
我有一个名为 Plan
的组件,它正在使用 Gatsby Link 组件。它看起来像这样:
const Plan = props => (
...
<Button>
<Link to={props.goTo}>Learn More</Link>
</Button>
...
)
这允许我按如下方式使用组件:<Plan goTo='events' />
,这将创建以下内容 URL:www.sitename.com/events
.
然而,我真正想要的是每个 URL 包含 advertise
目录,如下所示:www.sitename.com/advertise/events
。但是,我不想在 goTo
属性中包含 advertise
。
为了得到这个结果,我尝试了以下方法:
const Plan = props => (
...
<Button>
<Link to=`advertise/${props.goTo}`>Learn More</Link>
</Button>
...
)
但这不起作用。
所以我想知道我怎样才能做到这一点。
有什么想法吗?
更新:
明确一点——这就是我使用该组件的方式:
<Plan goTo="events" />
<PLan goTo="banner-ads" />
目前,这导致以下 HTML(删除了 class 个名称):
<button><a href="/events">Learn More</a></button>
<button><a href="/banner-ads">Learn More</a></button>
我想要的是以完全相同的方式(<Plan goTo='events' />
)使用组件,但HTML略有不同:
<button><a href="/advertise/events">Learn More</a></button>
<button><a href="/advertise/banner-ads">Learn More</a></button>
[注意在href
属性开头添加/advertise
]
用大括号括起反引号:
<Link to={/`advertise/${props.goTo}`}>Learn More</Link>
大括号告诉 JSX 它需要将内容解释为 JavaScript。
如果您要将 /advertise
添加到每个路径,请考虑将其添加到您的 Gatsby path prefix。
我有一个名为 Plan
的组件,它正在使用 Gatsby Link 组件。它看起来像这样:
const Plan = props => (
...
<Button>
<Link to={props.goTo}>Learn More</Link>
</Button>
...
)
这允许我按如下方式使用组件:<Plan goTo='events' />
,这将创建以下内容 URL:www.sitename.com/events
.
然而,我真正想要的是每个 URL 包含 advertise
目录,如下所示:www.sitename.com/advertise/events
。但是,我不想在 goTo
属性中包含 advertise
。
为了得到这个结果,我尝试了以下方法:
const Plan = props => (
...
<Button>
<Link to=`advertise/${props.goTo}`>Learn More</Link>
</Button>
...
)
但这不起作用。
所以我想知道我怎样才能做到这一点。
有什么想法吗?
更新:
明确一点——这就是我使用该组件的方式:
<Plan goTo="events" />
<PLan goTo="banner-ads" />
目前,这导致以下 HTML(删除了 class 个名称):
<button><a href="/events">Learn More</a></button>
<button><a href="/banner-ads">Learn More</a></button>
我想要的是以完全相同的方式(<Plan goTo='events' />
)使用组件,但HTML略有不同:
<button><a href="/advertise/events">Learn More</a></button>
<button><a href="/advertise/banner-ads">Learn More</a></button>
[注意在href
属性开头添加/advertise
]
用大括号括起反引号:
<Link to={/`advertise/${props.goTo}`}>Learn More</Link>
大括号告诉 JSX 它需要将内容解释为 JavaScript。
如果您要将 /advertise
添加到每个路径,请考虑将其添加到您的 Gatsby path prefix。