Назначение составной ссылки с использованием ссылки Gatsby через реквизиты

У меня есть компонент 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]


person Moshe    schedule 18.07.2019    source источник
comment
Не могли бы вы добавить детали к этому отчету? Что происходит, когда вы загружаете эту страницу, наводите указатель мыши на ссылку и нажимаете на нее?   -  person Jake Worth    schedule 18.07.2019
comment
@JakeWorth Пожалуйста, посмотрите новый раздел обновлений, который я добавил в свой вопрос.   -  person Moshe    schedule 18.07.2019
comment
Показанные вами JSX и HTML не совпадают. advertise/${props.goTo} не может производить /events. Возможно, у вас есть несохраненный файл, сервис-воркер или какая-то другая проблема с настройкой?   -  person Jake Worth    schedule 18.07.2019
comment
@JakeWorth Этот JSX и HTML были неудачной попыткой получить желаемый результат. Я задаю этот вопрос просто, чтобы показать, чего я пытаюсь достичь. Прямо сейчас я использую <Link to={props.goTo}>Learn More</Link>. Что я хотел бы изменить, как изменить этот код, чтобы /advertise/ автоматически добавлялся в начало каждого URL-адреса.   -  person Moshe    schedule 18.07.2019
comment
Хорошо, спасибо за пояснение. Я думаю, ваше решение сработало бы с фигурными скобками; мой ответ ниже.   -  person Jake Worth    schedule 18.07.2019


Ответы (1)


Оберните обратные кавычки в фигурные скобки:

<Link to={/`advertise/${props.goTo}`}>Learn More</Link>

Фигурные скобки сообщают JSX, что ему необходимо интерпретировать содержимое как JavaScript.

Если вы добавляете /advertise к каждому пути, подумайте о добавлении этого в свой префикс пути Гэтсби.

person Jake Worth    schedule 18.07.2019