質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

HeadlessCMS

HeadlessCMS(ヘッドレスCM)とは、REST APIを用いてコンテンツを提供するCMS。そのため、あらゆるデバイスで表示することができます。フロントエンドとバックエンドの分離されており、フロントエンド側の高い自由度が特徴です。

Vercel

Vercelとは、フロントエンド開発向けのフレームワークです。静的サイトとサーバレス機能のためのクラウドプラットフォームで、簡単にWebサイトやWebサービスをデプロイできます。自動でスケールでき、監視や各種設定も必要ありません。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1686閲覧

React(Next.js)にて目次を導入したい

shunki1023

総合スコア22

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

HeadlessCMS

HeadlessCMS(ヘッドレスCM)とは、REST APIを用いてコンテンツを提供するCMS。そのため、あらゆるデバイスで表示することができます。フロントエンドとバックエンドの分離されており、フロントエンド側の高い自由度が特徴です。

Vercel

Vercelとは、フロントエンド開発向けのフレームワークです。静的サイトとサーバレス機能のためのクラウドプラットフォームで、簡単にWebサイトやWebサービスをデプロイできます。自動でスケールでき、監視や各種設定も必要ありません。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/10/02 11:22

エキスパートの皆様、こんにちは

今回お伺いしたいのはReact(Next.js)にて目次を導入する方法です。
Javascriptで導入を試みているのですが、参考になるものはどれもTypescriptで記載されており、Javascriptでどうすればいいのかわかりません。(Reactの理解が不足しているのも要因です。)

具体的な不明点の前に、まずは■状況を記述します。
・Next.jsとJavascriptでブログを作成中
・ブログの内容はheadlessCMS(graphCMS)でリッチテキストで取得
・目次作成のためにtocbotというライブラリを導入( https://tscanlin.github.io/tocbot/ )
ファイルAでtocbotを読み込み、コンポーネントにしたものをエクスポート
・表示したいページファイル(ファイルB)でファイルBをインポートして表示させた結果、tocbotが目次作成に引用した範囲はファイルAの中だけだった

■ 具体的な不明点
・ファイルBの内容をファイルAからtocbotで目次にするにはどうすれば良いか

■コード
ファイルA(/component/tocbot.js)

javascript

1import { useEffect, Component } from 'react' 2import tocbot from 'tocbot' 3 4const Toc = () => { 5 useEffect(() => { 6 tocbot.init({ 7 tocSelector: '.toc', 8 contentSelector: '.body', 9 headingSelector: 'h2, h6', 10 }) 11 12 return () => tocbot.destroy() 13 }, []) 14// 15 const {contentBody} = this.props 16// 17 return ( 18 <> 19 <div className="toc" /> 20 </> 21 ) 22}

ファイルB(/pages/blog/[id].js)

Javascript

1import Toc from '../../components/toc' 2・・・ 3 return ( 4 <div className={styles.container}> 5 <Head> 6・・・ 7 {Toc()} 8 <div className="body"> 9・・・

ご教授くださいませ。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

コンテンツを非同期で取得しているのですが、その同期前に目次を作成してしまい生成されていなかったようです。
この問題はまた別のように感じるので、閉じさせていただきます。

投稿2021/10/02 12:11

shunki1023

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問