Как использовать условие _or_ в строках шаблона?

Я создаю проект с использованием node.js. я использую yo-yo библиотека для создания HTML-шаблонов.

Я хочу добавить обложку из твита пользователя profile_banner_url.

Как это:

const yo = require('yo-yo')
module.exports = function (tweet) {
  return yo`
    <div class='cover'>
      <img src='${tweet.user.profile_banner_url}' />
    </div>
  `
}

Тем не менее, иногда твиты не возвращают profile_banner_url, что приводит к ошибке в браузере.

Я пытался добавить другое изображение из public каталог:

<img src='${tweet.user.profile_banner_url} || otherimg.jpg' />

Но это не сработало.

Какой подход лучше всего использовать or условие в строках шаблона?

3 ответа

Решение

Ты ищешь

`<div class='cover'>
  <img src='${tweet.user.profile_banner_url || 'otherimg.jpg'}' />
</div>`

Обратите внимание, что часть внутри ${...} это просто регулярное выражение JavaScript.

Я предполагаю, что теперь можно использовать нулевой оператор объединения, например

      <img src="${some_url ?? 'publicurl.jpg'}" />

Или обычная тройка

      <img src="${some_url !== undefined ? some_url : 'public.jpg'}" />

Я нашел это решение для моего случая

`<input class="range-slider__slider" type="range" ${ ( (inputType) => {
                  if(inputType == 'temperature')
                    return 'min="-10" max="30" value="23" data-type="' + inputType +'"';
                  else if(inputType == 'light')
                    return 'min="0" max="1000" value="300" data-type="' + inputType +'"';
                  else if(inputType == 'floor')
                    return 'input(type="range" min="0" max="30" value="23" data-type="' + inputType + '"';
                  else
                    return ''
                } )(inputType)}">`
Другие вопросы по тегам