javascript - 如何处理 jsx for gatsby 中 graphql 查询的空结果?

标签 javascript graphql jsx gatsby

我在模板文件中有一个 graphql 查询,它为某些页面提供 null。我该如何处理这而不是类型错误?

graphql 查询:

export const query = graphql`
    query(
            $cat: String!,
            $regexCat: String!
        ) 
    {
        products: allWarenlisteCsv(filter: {Warengruppe: {eq: $cat}}) {
            edges {
              node {
                Artikelnummer
                Artikelbeschreibung
                Bemerkungen
                Preis
                Grafik
              }
            }
        }
        categories: allWarenlisteCsv(filter: {Warengruppe: {regex: $regexCat}}) {
            distinct(field: Warengruppe)
        }
        imagemap: imagemapsCsv(Warengruppe: {eq: $cat}) {
            Warengruppe
            image
            map
        }
    }
`

图像映射返回:

{
  "data": {
    "imagemap": null
  }
}

对于大多数页面。

然后我得到

TypeError: imagemap is null

我试图在 jsx 中像这样处理它,但不起作用:

 { imagemap !== 'undefined' &&
            <div>
                <img src={ "/images/image_maps/" + imagemap.image } usemap="#map" alt="Explosionszeichnung"></img>
                <map name="map" dangerouslySetInnerHTML={{__html: imagemap.map}} />
            </div>
 }

(图像稍后将由 gatsby-image 处理)

最佳答案

您正在检查是否imagemapundefined - 不是 null .

你应该做 imagemap !== null , 但写成 { imagemap && <div>...</div> } 会更容易

这将检查 nullundefined .另见 Understanding JavaScript Truthy and Falsy

关于javascript - 如何处理 jsx for gatsby 中 graphql 查询的空结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58128817/

相关文章:

javascript - Angular 2 SPA 加载屏幕未显示 Visual Studio 2017

javascript - 更改 url 参数时 react 路由器不重新加载组件

javascript - 获取匿名对象类型的字符串名称?

javascript - FB.api 不是函数

javascript - GraphQL - 如何响应不同的状态码?

python - 如何使用 gql 访问外部 graphql URL

javascript - 如何使用带有超链接的翻译 __()

mysql - 如何从数据库获取最后插入的id并将其发送到组件?

javascript - 名称为空的 Cookie - 这有效吗?

javascript - Node.js 与 Graphql