![](/img/trans.png)
[英]How to add eternal script tag in Gatsby body ? With conditional rendering of script in body Tag?
[英]How to create a conditional rendering of Gatsby's Link component and <a> tag for links?
从 Gatsby 的官方文档中关于 Gatsby 的 Link 组件,它指出 Link 组件仅用于内部链接,而对于外部链接,必须使用标签。
我正在构建一个具有内置链接道具的 Button 组件。 问题是现在由于限制,我必须为内部和外部链接创建 2 个单独的 Button 组件。
我的目标是使用一个可用作内部和外部链接的freeLink
组件
我尝试为按钮创建一个子组件( Button
),但我不确定需要条件渲染的父组件( freeLink
)。 子组件如下:
const Button = props => (
<button className={props.btnType}>
<span>{props.text}</span>
</button>
)
这是我想要实现的视觉逻辑:
<freeLink intLink="/about" btnType="btn-cta" text="Read about us">
</freeLink>
...which will render...
<Link to="/about">
<button className="btn-cta">
<span>Read about us</span>
</button>
</Link>
<freeLink extLink="https://google.com" btnType="btn-cta" text="Visit Our Partner">
</freeLink>
...which will render...
<a href="https://google.com">
<button className="btn-cta">
<span>Visit Our Partner</span>
</button>
</a>
我对 Javascript、Gatsby 和 React 很陌生,所以我不确定如何根据应用的道具应用条件渲染。
非常感谢任何有关如何编写freeLink
组件的建议、建议或指导。
PS:我已经在 React Compoment 中看到有条件地使用 Gatsby Link,但是选择的答案太复杂了,我无法理解,我没有足够的评论点来要求进一步阐述。
const MyLink = (href, text, ...props) => {
if (href.startsWith("http") {
return <a href={href} {...props}>{text}</a>
} else {
return <Link href={href} {...props}>{text}</Link>
}
}
您的组件可能会根据您传递给它的to
或href
属性返回不同的东西:
import { Link } from "gatsby"
const freeLink = props => {
if (props.to) return <Link {...props} />
return <a {...props} />
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.