【React】关于React-toastify
这篇文章的目的是什么。
-
- Reactの理解とアウトプット、振り返り用
-
- Reactでよく使われている基本的な技術を言語化できるようする
- React-toastifyについて
简而言之
-
- React-toastifyとは
-
- React-toastifyインストール
-
- React-toastify使用例
- 【番外】オプションについて
React-toastify 是什么?
安装React-toastify
使用下述命令进行安装。
npm i -D react-toastify
React-toastify的用法。
读取最顶层(最近的)组件。
通过这样做,可以在所有子组件中使用。
import { ToastContainer, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
<ToastContainer />
记录的例子
只要上述的代码中包含了@tanstack/react-query相关的内容,就不会有问题,因为它是基于API进行实现的。
import { Router } from './Router';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false
},
mutations: {
retry: false
}
}
});
export const App = () => {
return (
<QueryClientProvider client={queryClient}>
<Router />
<ToastContainer
closeOnClick
theme="colored"
/>
</QueryClientProvider>
)
}
请尝试在React-toastify官方文档中查看有关 closeOnClick theme=”colored” 的选项,并进行相应的行为和样式更改。
在子组件中,您可以通过以下方式调用toast。
import { toast } from 'react-toastify';
// 引数に表示したいエラーメッセージを記載
toast.error('更新に失敗しました')
记载的例子
在更新处理失败时,我们使用toast来显示错误消息。
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import * as api from '../api/TaskAPI';
import { toast } from 'react-toastify';
export const useTasks = () => {
return useQuery(['tasks'],async () => api.getTasks())
}
export const useUpdateDoneTask = () => {
const queryClient = useQueryClient();
// 第一引数:API
// 第二引数:コールバックの処理
return useMutation(api.updateDoneTask, {
onSuccess: () => {
// コンポーネントの再描画,引数はkeyとなる文字列
queryClient.invalidateQueries(['tasks']);
},
onError: () => {
// エラーmessageはreact-toastifyのtoastのerrorメソッドを使用
// 引数に表示したいエラーmessageを記載
toast.error('更新に失敗しました');
}
});
}
通过这样做,当更新处理失败时,可以显示类似于我之前提供的第一个GIF中的错误消息。
【附加】选项
オプション名説明position文字通りトーストが表示されるポジションを指定します。
top-right, top-left, top-center, bottom-left, bottom-right, bottom-centerから選べる。autoCloseトーストはautoCloseで設定したミリ秒経過時に閉じます。デフォルトでは5,000ミリ秒(5秒)です。
反対にautoCloseの設定を完全に外すことができないので、外したい場合はミリ秒を極端に長く設定する。hideProgressBarautoCloseで設定したミリ秒の経過を、プログレスバーで表示する機能。
デフォルト設定では表示されますが、={false}の部分を削除して、単にhideProgressBarとすると非表示になります。newestOnTop複数のトーストが同時に表示される場合に、トーストを重ねるか否かを選択できます。デフォルトでは重ねず上下に表示されます。closeOnClickトーストをクリックで消せるか否かの設定。デフォルトでは可能です。不可としたい場合は、={false}を追記する。rtlritht to leftの略。トースト内で表示される文字はデフォルトでは左寄せ(rtl={false})、
文字を右寄せにしたい場合は={false}を外す。pauseOnFocusLossフォーカスが外れた(ブラウザの外側をクリックした)場合に、autoCloseで設定したミリ秒の経過を一時停止するオプション。デフォルトは一時停止。draggableトーストをドラッグしながら消すことができます。画面外に押しやるイメージ。pauseOnHoverトーストをホバーすると(マウスが上に重なると)、autoCloseで設定したミリ秒の進行が止まります。themeデフォルトは白い背景で表示されますが、色は変更することが可能です。
ダークモードにする場合はtheme=”dark”とします。
top-right, top-left, top-center, bottom-left, bottom-right, bottom-centerから選べる。autoCloseトーストはautoCloseで設定したミリ秒経過時に閉じます。デフォルトでは5,000ミリ秒(5秒)です。
反対にautoCloseの設定を完全に外すことができないので、外したい場合はミリ秒を極端に長く設定する。hideProgressBarautoCloseで設定したミリ秒の経過を、プログレスバーで表示する機能。
デフォルト設定では表示されますが、={false}の部分を削除して、単にhideProgressBarとすると非表示になります。newestOnTop複数のトーストが同時に表示される場合に、トーストを重ねるか否かを選択できます。デフォルトでは重ねず上下に表示されます。closeOnClickトーストをクリックで消せるか否かの設定。デフォルトでは可能です。不可としたい場合は、={false}を追記する。rtlritht to leftの略。トースト内で表示される文字はデフォルトでは左寄せ(rtl={false})、
文字を右寄せにしたい場合は={false}を外す。pauseOnFocusLossフォーカスが外れた(ブラウザの外側をクリックした)場合に、autoCloseで設定したミリ秒の経過を一時停止するオプション。デフォルトは一時停止。draggableトーストをドラッグしながら消すことができます。画面外に押しやるイメージ。pauseOnHoverトーストをホバーすると(マウスが上に重なると)、autoCloseで設定したミリ秒の進行が止まります。themeデフォルトは白い背景で表示されますが、色は変更することが可能です。
ダークモードにする場合はtheme=”dark”とします。