我该如何使用钩子上的react-toastify?

时间:2020-07-09 17:48:31

标签: reactjs react-hooks react-toastify

我找到了 useToast useToastContainer ,但是缺少文档,而且我不知道您如何使用这些挂钩。谁能提供有关这些钩子的一些信息?

1 个答案:

答案 0 :(得分: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>
    );
  }

您可以使用它们之一。我更喜欢 2nd 方法,因为您只需要定义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>
)