LoginSignup
4
2

More than 1 year has passed since last update.

react-aceをNext.jsで使うときのメモ

Last updated at Posted at 2021-09-03

概要

react-aceは簡単にサイトにコードエディタを埋め込めるのでとても便利
だけどグローバルのwindowを参照するのでNext.jsで使うときに一苦労する
dynamic importを使う方法がいまいち調べても出てこなかったので書き留めておく。

Next.jsで使う

上述の通りwindowを参照するので公式に紹介されてる通りでは使えない
→dynamic importを使う

必要なライブラリをインストールする

npm install react-ace ace-builds

next.jsのdynamic importを使う

import dynamic from 'next/dynamic';

const AceEditor = dynamic(async () => {
  const ace = await import('react-ace');
  await import("ace-builds/src-noconflict/mode-???");
  await import("ace-builds/src-noconflict/theme-???");
  return ace;
}, { ssr: false });

???には自分の好きなモードとかテーマを入れてください
awaitしているのは、react-aceが読み込まれた状態じゃないとace-buildsのモードとかテーマが適用できないからです。

モードとかテーマとかなしにデフォルトで使うなら

import dynamic from 'next/dynamic';

const AceEditor = dynamic(async () => import('react-ace'), { ssr: false });

でいいと思います。

あとは公式で紹介されてる通りに使えるはずです

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2