Как я могу использовать react-toastify from hook?
Я нашел useToast и useToastContainer, но документации нет, и я не понимаю, как использовать эти хуки. Кто-нибудь может предоставить информацию об этих крючках?
1 ответ
В toasts
наследовать ToastContainer’s
реквизит. Свойства, определенные в тосте, заменяют свойства ToastContainer.
Есть два способа использовать toasts
в вашем приложении:
1. Определите
ToastContainer
внутри компонента
import { ToastContainer, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
const App = () => {
notify = () => toast("Wow so easy !");
return (
<div>
<button onClick={notify}>Notify !</button>
// You can add <ToastContainer /> in root component as well.
<ToastContainer />
</div>
);
}
2. Позвоните
toast.configure()
один раз в вашем приложении. Наroot
вашего приложения - лучшее место.
Библиотека смонтирует ToastContainer
для вас, если ни один не установлен.
import { toast } from "react-toastify";
import 'react-toastify/dist/ReactToastify.css';
// Call it once in your app. At the root of your app is the best place
toast.configure()
const App = () => {
notify = () => toast("Wow so easy !");
return (
<button onClick={notify}>Notify !</button>
);
}
Вы можете использовать любой из них. Я предпочитаю второй метод, потому что вам нужно только определитьtoast.configure()
что довольно чистый способ добавить его.
Вы можете добавить конфигурацию в соответствии с вашими потребностями, как показано ниже:
toast.configure({
autoClose: 8000,
draggable: false,
//etc you get the idea
});
РЕДАКТИРОВАТЬ
Если вы хотите использовать перехватчики тостов, вы должны обернуть свое приложение ToastProvider, чтобы иметь доступ к его контексту в другом месте вашего приложения.
import { ToastProvider, useToasts } from 'react-toast-notifications'
const FormWithToasts = () => {
const { addToast } = useToasts()
const onSubmit = async value => {
const { error } = await dataPersistenceLayer(value)
if (error) {
addToast(error.message, { appearance: 'error' })
} else {
addToast('Saved Successfully', { appearance: 'success' })
}
}
return <form onSubmit={onSubmit}>...</form>
}
const App = () => (
<ToastProvider>
<FormWithToasts />
</ToastProvider>
)