如何在React中创建像Toast这样的全局组件并在任何其他组件中引用它?

sam*_*m23 1 reactjs

我正在尝试使用React创建一个App.我想在应用程序中全局添加一个Toast组件,以便其他组件可以引用它来显示自定义消息.

我想在以下层次结构中添加toast:

ReactDOM.render(
        <BrowserRouter>
            <section>
                  <App />
                  <Toast />
            </section>
        </BrowserRouter>
Run Code Online (Sandbox Code Playgroud)

并参考应用程序内的Toast组件.我该如何实现它?

Eug*_*aev 7

首先,您需要导入ToastContainer和CSS文件:

import { ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
Run Code Online (Sandbox Code Playgroud)

然后在 App.js 的顶部添加ToastContainer

<React.Fragment>
        <ToastContainer />
        <NavBar ... />
        ....
</React.Fragment>
Run Code Online (Sandbox Code Playgroud)

然后您可以通过导入 Toast在任何组件、类和函数中使用toast弹出窗口:

import { toast } from "react-toastify";
Run Code Online (Sandbox Code Playgroud)

然后将其与toast()ortoast.error()toast.info()等方法一起使用

toast("Wrong email or Password");
...
toast.error("Some kind of Error");
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 !


Zam*_*zal 5

你应该安装包 https://www.npmjs.com/package/react-toastify 然后添加导入和添加

<ToastContainer />
Run Code Online (Sandbox Code Playgroud)

在您的标题或某些组件,如在每个页面使用的侧边栏.您现在可以在任何页面上显示Toast消息

toast.error("this is toast error"); 
Run Code Online (Sandbox Code Playgroud)

  • 我必须在所有组件中 `import { toast } from 'react-toastify';` (2认同)