GatsbyJs возвращает неожиданный токен "если" при компиляции

У меня есть простой код в gatsbyJs, который получает данные из Staticquery ingraphql и отображает компонент. Мне нужно проверить в функции рендера, существует ли подобъект в объекте данных, и добавить

HTML-блок с данными, если подобъект существует.

Вот код:

import React from 'react'
import { Link, StaticQuery, graphql } from 'gatsby'

export default () =>(
   <StaticQuery
   query={graphql`
       query ProductQuery {
        contentful: allContentfulProduct {
          products: edges {
            product: node {
              id
              name
              teaser {
                       teaser
                     }
            }
          }
       }}
       `}
    render={data => (

        data.contentful.products.map((product) => (
           <div className="col-md-4 inline">
             <h1>{product.product.name}</h1>
             {if (product.product.teaser !==null){
                <p>{product.product.teaser.teaser}</p>
             } 


             { console.log(product)}
           </div>

        )
     ))}
     />
)

Когда я удаляю блок if, код работает нормально, но с компиляцией if.

1 ответ

Решение

Вы не можете использовать if оператор в строке внутри выражения фигурной скобки, как это. Попробуйте изменить свой синтаксис на:

{product.product.teaser !== null && (
    <p>{product.product.teaser.teaser}</p>
)}

Дополнительные примеры в документации: https://reactjs.org/docs/conditional-rendering.html

Другие вопросы по тегам