У меня есть компонент под названием 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. Однако я не хочу включать advertise в реквизит goTo.
Чтобы получить этот результат, я попробовал следующее:
const Plan = props => (
...
<Button>
<Link to=`advertise/${props.goTo}`>Learn More</Link>
</Button>
...
)
Но это не работает.
Итак, мне интересно, как я могу это сделать.
Есть идеи?
Обновлено:
Просто для ясности - вот как я использую компонент:
<Plan goTo = "events" />
<PLan goTo = "banner-ads" />
В настоящее время это приводит к следующему HTML (с удаленными именами классов):
<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>
[обратите внимание на добавление /advertise в начале атрибута href]
@JakeWorth Пожалуйста, посмотрите новый раздел «Обновление», который я добавил к своему вопросу.
Показанные вами JSX и HTML не совпадают. advertise/${props.goTo} не должен производить /events. Возможно, у вас есть несохраненный файл, сервисный работник или какая-то другая проблема с настройкой?
@JakeWorth Эти JSX и HTML были неудачной попыткой получить результат, который я ищу. Я поставил это в вопрос просто, чтобы показать, чего я пытаюсь достичь. Сейчас я использую <Link to = {props.goTo}>Learn More</Link>. Что бы я хотел, как изменить этот код, чтобы /advertise/ автоматически добавлялся в начало каждого URL-адреса.
Хорошо, спасибо, что разъяснили это. Я думаю, что ваше решение сработало бы с фигурными скобками; см. мой ответ ниже.





Заключите обратные кавычки в фигурные скобки:
<Link to = {/`advertise/${props.goTo}`}>Learn More</Link>
Фигурные скобки сообщают JSX, что ему нужно интерпретировать содержимое как JavaScript.
Если вы добавляете /advertise к каждому пути, рассмотрите возможность добавления этого к вашему Префикс пути Гэтсби.
Не могли бы вы добавить некоторые детали в этот отчет? Что происходит, когда вы загружаете эту страницу, наводите курсор на ссылку и нажимаете на нее?