В официальных документах Gatsby, касающихся компонента Link Gatsby, говорится, что компонент 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: я видел Условно используйте ссылку Gatsby в React Compoment но выбранный ответ слишком сложен для меня, чтобы понять, и у меня нет достаточно комментариев, чтобы просить о дальнейшей разработке.