react-schemaorgを使ってJSON-LDをサイトに設定する
JSON-LDはGoogleの検索結果に反映されることもあり、できるだけ対応したい用件ではあります。 Reactを使う場合、 react-schemaorgというGoogleが提供しているライブラリを使うと簡単に実装でき […]
広告ここから
広告ここまで
目次
JSON-LDはGoogleの検索結果に反映されることもあり、できるだけ対応したい用件ではあります。
Reactを使う場合、 react-schemaorgというGoogleが提供しているライブラリを使うと簡単に実装できます。
$ yarn add react-schemaorg schema-dts
Usage
JsonLd
タグのitemプロパティにデータを投入します。
import { WebPage, Article } from "schema-dts";
import { JsonLd } from "react-schemaorg";
type Post = {
author: string;
title: string;
content: string;
excerpt: string;
}
const WebpageContent = ({post}: {
post: Post
}) => {
return (
<JsonLd<WebPage>
item={{
"@context": "https://schema.org",
'@type': 'WebPage',
author: post.author,
name: post.title,
abstract: post.excerpt,
}}
/>
)
}
あとは通常のReactコンポーネントと同じように使えばOKです。
const IndexPage = () => {
const post: Post = {
author: 'John',
title: "Hello JSON-LD",
content: "Welcome to JSON-LD with React world!",
excerpt: "Simply example of JSON-LD with React application."
}
return (
<Layout>
<SEO title="Home" />
<WebpageContent
post={post}
/>
<h1>{post.title}</h1>
<p><small>{post.author}</small></p>
<p>{post.excerpt}</p>
<div dangerouslySetInnerHTML={{__html: post.content}}></div>
</Layout>
)
}
通常のViewをレンダリングする処理の中に入れれるのが便利ですね。
どう表示されるか
JsonLdコンポーネントはscriptタグとして表示されます。
Rendered HTML
<main>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"author": "John",
"name": "Hello JSON-LD",
"abstract": "Simply example of JSON-LD with React application."
}
</script>
<h1>Hello JSON-LD</h1>
<p><small>John</small></p>
<p>Simply example of JSON-LD with React application.</p>
<div>Welcome to JSON-LD with React world!</div>
</main>
簡単ですね。