没有呈现Toast(反应 - 组合成分)

时间:2018-03-20 07:42:11

标签: reactjs toast

我正在使用react-toastify并且我无法获得简单的吐司...

import React from "react";
import { toast } from 'react-toastify';

class MyView extends React.Component<{}, {}> {

    constructor() {
        super();
        this.state = {

        };
    }

    componentDidMount() {
        toast("Hello", { autoClose: false });
    }

    notify = () => toast("Hello", { autoClose: false });

    render() {
        return (
           <div>
             <button onClick={this.notify}>Notify</button>
           </div>
      )}
}

package.json(在“依赖项”部分中)

"react": "^16.2.0",
"react-toastify": "^3.2.2"

如果我调试它,我看到我的toast排队,_EventManager2永远不会得到通常从队列中发出祝酒词的_constant.ACTION.MOUNTED事件......

/**
 * Wait until the ToastContainer is mounted to dispatch the toast
 * and attach isActive method
 */
_EventManager2.default.on(_constant.ACTION.MOUNTED, function (containerInstance) {
  container = containerInstance;

  toaster.isActive = function (id) {
    return container.isToastActive(id);
  };

  queue.forEach(function (item) {
    _EventManager2.default.emit(item.action, item.content, item.options);
  });
  queue = [];
});

..所以ToastContainer可能有问题,但是什么?我只是使用文档中的示例代码。

感谢您的帮助!

6 个答案:

答案 0 :(得分:16)

  

您还必须import 'react-toastify/dist/ReactToastify.css';

  import React, { Component } from 'react';
  import { ToastContainer, toast } from 'react-toastify';
  import 'react-toastify/dist/ReactToastify.css';
  // minified version is also included
  // import 'react-toastify/dist/ReactToastify.min.css';

  class App extends Component {
    notify = () => toast("Wow so easy !");

    render(){
      return (
        <div>
        <button onClick={this.notify}>Notify !</button>
          <ToastContainer />
        </div>
      );
    }
  }

答案 1 :(得分:1)

其他解决方案对我不起作用-事实证明我没有将字符串传递给toast.*函数。例如:

  getSomethingFromApi()
     .then((response) =>  { 
         // this works fine because response.message is a string
         toast.notify(response.message)
      })
     .catch((error) => {
         // this will fail to renter because error is an object, not a string
         toast.error(error)
      })

答案 2 :(得分:1)

更好的是,导入缩小的CSS:

import 'react-toastify/dist/ReactToastify.min.css';

或者如果您将其导入.scss文件中

@import '~react-toastify/dist/ReactToastify.min.css';

答案 3 :(得分:1)

使用命令安装 react-toastify

npm i react-toastify

那么:

import {ToastContainer,toast} from 'react-toastify'

作为回报添加

<ToastContainer />

然后当你做 toast('hy') 然后它会显示吐司

答案 4 :(得分:0)

我的错误是导入没有{}大括号的吐司,因为我的课程讲师这样做了。

尝试更改此内容:

    import toast from 'react-toastify';

收件人:

    import { toast } from 'react-toastify';

还根据所有其他“ react-toastify”堆栈溢出响应,安装最新版本会导致问题。因此,请尝试将其卸载并安装您的课程讲师所安装的较旧版本,或者4.1版似乎适用于大多数人。 首先卸载:

    npm uninstall react-toastify --save

然后安装4.1版本:

    npm i react-toastify@4.1 

答案 5 :(得分:-1)

在声明您的课程之前,添加以下行:

toast.configure();