金曜日, 5月 9, 2025
No menu items!
ホームニューステックニュース【Reactアプリ100本ノック】09 Memo #初心者 - Qiita

【Reactアプリ100本ノック】09 Memo #初心者 – Qiita



【Reactアプリ100本ノック】09 Memo #初心者 - Qiita

はじめに

ゆかっしゅです。
2021年に事務職からデザイナー/コーダーにジョブチェンジをし、現在はフロントエンドエンジニアにスキルアップするべく、モダンフロントエンドを学習しています。

ReactやTypeScriptの基礎学習は終了したのに、なかなか0から自分だけでアプリを作れないので手を動かすべく「Reactアプリ100本ノック」 に挑戦してみようと思います。

Reactアプリ100本ノックルール

  • 主要なライブラリやフレームワークはReactである必要がありますが、その他のツールやライブラリ(例: Redux, Next.js, Styled Componentsなど)を組み合わせて使用することは自由
  • TypeScriptを利用する
  • 要件をみたせばデザインなどは自由

09. Memo

スクリーンショット 2025-05-08 152708.png

問題

ユーザーが思いついたことを迅速かつ効率的に記録し、整理するためのツールを提供します。リッチテキストエディタは、メモをフォーマットし、より視覚的かつ整理された形で情報を保存することを可能にします。

達成条件

  • メモを作成できる
  • メモを削除できる
  • メモを選択すると選択されたメモの内容がエディタに表示される

実際に解いてみた

利用技術

React(19.0.0)
TypeScript(5.0)
Next.js(15.3.1)
Tailwindcss(4.0)
jotai(2.12.3)
tiptap(2.12.0)
Vercel

解答時間 4時間半

もうちょっとブロックパーツ部分のスタイル作りこみたかったんですけど、時間がかかりすぎちゃったのでやめました。

まず使うリッチテキストエディタライブラリの選定から始めました。最初は学習コスト少なそうな「Quill」を使おうと色々調べてたのですが、なんと React v19に対応していない ことがわかり、選定しなおしへ…

結局「tiptap」を使用しました。キャッチアップに時間がかかりました…
tiptapのドキュメントは↓こちら↓(サンプルコードもあります)

今後ブログとかに応用できそうだなぁと思ったので、備忘録的に「tiptap」の使い方をまとめたいと思います。

※tailwindcssと併用するときの注意点もあります。

リンク

【備忘録】Tiptap

準備

まずはインストールします。
Tiptapにはいろいろなキット(?)があり、使いたいものをインストールするような形です。
今回のようなBlog風のエディタを作成するには以下をインストールしました。

  • @tiptap/react:React用のTiptapの公式パッケージ
  • @tiptap/starter-kit:基本機能のセット(太字、打消し、リスト等)
  • @tiptap/extension-heading:H1-H6などの見出しを使えるようにする拡張機能
  • @tiptap/extension-link:アンカーリンクを使える由生にする拡張機能
pnpm add @tiptap/extension-heading @tiptap/extension-link @tiptap/react @tiptap/starter-kit

初期表示

editor.tsx

// components/Editor.tsx
"use client";

import { useEditor, EditorContent } from "@tiptap/react";
import StarterKit from "@tiptap/starter-kit";

export const Editor = () => {
  const editor = useEditor({
    extensions: [StarterKit],
    content: "

ここに初期表示されます。

", }); return ( div className="p-4 border rounded"> EditorContent editor={editor} /> /div> ); };

useEditor:先ほどインストールしたtiptap/reactにはいっているフックです。ここでエディターの初期化を行います。

extensions: [StarterKit]:さきほどインストールしたtiptap/starter-kitextensionsに設定することで基本的なリッチテキスト機能(太字、打消し、リスト等)が使用できます。

extensions: [StarterKit]:さきほどインストールしたtiptap/starter-kitextensionsに設定することで基本的なリッチテキスト機能(太字、打消し、リスト等)が使用できます。

content: “”:初期表示内容です。空にもできます。

このコードで下記のような実装ができます。
最初は

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

Most Popular

Recent Comments