react-toastify は、React アプリケーションで簡単に通知(トースト)を表示するためのライブラリです。使いやすく、カスタマイズ性も高いため、多くの開発者に利用されています。以下に、react-toastify の基本的な使い方をステップバイステップで説明します。
1. インストール
まず、プロジェクトに react-toastify
をインストールします。npm または yarn を使用できます。
# npm を使用する場合
npm install react-toastify
# yarn を使用する場合
yarn add react-toastify
2. 基本的な設定
インストールが完了したら、アプリケーションで react-toastify を設定します。一般的には、アプリケーションのエントリーポイント(例: App.js
)で設定します。
例: App.js
import React from 'react';
import { ToastContainer, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
function App() {
const notify = () => toast("デフォルトの通知!");
return (
<div>
<h1>react-toastify の使い方</h1>
<button onClick={notify}>通知を表示</button>
<ToastContainer />
</div>
);
}
export default App;
説明
- インポート
ToastContainer
: 通知を表示するコンテナコンポーネント。toast
: 通知をトリガーする関数。- CSS ファイルのインポート: デフォルトのスタイルを適用します。
- 通知を表示する関数
notify
関数内でtoast
を呼び出し、通知メッセージを指定します。
- コンポーネントのレンダリング
- ボタンをクリックすると
notify
関数が実行され、通知が表示されます。 <ToastContainer />
はアプリケーション内のどこにでも配置できますが、通常はアプリケーションのルートに配置します。
- ボタンをクリックすると
3. 通知の種類
react-toastify では、さまざまな種類の通知を簡単に表示できます。
成功通知
toast.success("成功しました!");
エラー通知
toast.error("エラーが発生しました!");
警告通知
toast.warn("警告メッセージ");
情報通知
toast.info("情報メッセージ");
カスタム通知
カスタムコンポーネントを使用して通知をカスタマイズすることもできます。
const CustomToast = ({ closeToast }) => (
<div>
<h4>カスタム通知</h4>
<button onClick={closeToast}>閉じる</button>
</div>
);
// 使用例
toast(<CustomToast />);
4. オプション設定
通知にはさまざまなオプションを設定できます。ToastContainer
や toast
関数にプロパティを追加することでカスタマイズが可能です。
ToastContainer の主なオプション
position
: 通知の表示位置。例:top-right
,top-center
,bottom-left
など。autoClose
: 自動で閉じるまでの時間(ミリ秒)。false
にすると自動閉鎖しません。hideProgressBar
: プログレスバーを非表示にするか。newestOnTop
: 新しい通知を上に表示するか。closeOnClick
: クリックで通知を閉じるか。pauseOnHover
: ホバー時にタイマーを一時停止するか。
例: カスタマイズされた ToastContainer
<ToastContainer
position="top-right"
autoClose={5000}
hideProgressBar={false}
newestOnTop={false}
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
/>
5. グローバル設定
アプリケーション全体で共通の設定を行いたい場合、ToastContainer
を一度だけ設定し、必要に応じて toast
関数を使用します。
例: index.js に配置
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
ReactDOM.render(
<React.StrictMode>
<App />
<ToastContainer
position="bottom-left"
autoClose={3000}
hideProgressBar
newestOnTop
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
/>
</React.StrictMode>,
document.getElementById('root')
);
6. アニメーションとテーマ
react-toastify では、通知のアニメーションやテーマをカスタマイズできます。
アニメーションの変更
デフォルトのアニメーション以外にも、さまざまなアニメーションを選択できます。例えば、Slide
, Zoom
, Flip
, Bounce
など。
import { Slide } from 'react-toastify';
// 使用例
<ToastContainer transition={Slide} />
テーマの変更
ライトテーマとダークテーマが用意されています。
<ToastContainer theme="dark" />
7. TypeScript を使用している場合
TypeScript プロジェクトでも react-toastify は問題なく使用できます。型定義も提供されているため、型エラーを気にする必要はありません。
例: TypeScript での使用
import React from 'react';
import { ToastContainer, toast, ToastOptions } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
const App: React.FC = () => {
const notify = () => {
const options: ToastOptions = {
position: "top-center",
autoClose: 3000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
progress: undefined,
theme: "colored",
};
toast.success("成功しました!", options);
};
return (
<div>
<button onClick={notify}>通知を表示</button>
<ToastContainer />
</div>
);
};
export default App;
8. まとめ
react-toastify を使用することで、React アプリケーションに簡単かつ効果的に通知機能を追加できます。基本的な設定から高度なカスタマイズまで、多くのオプションが用意されているため、プロジェクトのニーズに合わせて柔軟に対応できます。公式ドキュメントも充実しているので、さらに詳細な情報や最新の機能については react-toastify の公式サイト を参照してください。