gpt4 book ai didi

javascript - React-toastify 显示多个 toast

转载 作者:行者123 更新时间:2023-12-03 07:20:14 27 4
gpt4 key购买 nike

我正在构建一个包含多个组件的 React 应用程序,其中至少有一半我正在使用 React-notify除了一个之外,它几乎在所有这些中都能正常工作。在这一次,当我触发 toast 时,我得到了四个 toast ,一个接一个,但我相信它们不是不同的 toast ,因为它们具有相同的 ID。
我找到了这个帖子 https://github.com/fkhadra/react-toastify/issues/182 ,这里用户遇到了和我一样的问题,唯一的异常(exception)是我没有设置 autoclose ,他甚至提供了一个显示问题的 gif:
https://imgur.com/a/8NMMaRa
根据这个线程的解决方案是删除所有 <ToastContainer />组件并将其呈现在应用程序根目录中,在我的例子中是 App.js .我这样做了,但是不再显示 toast ,但我不知道我是否做得对。
除此之外,我还尝试设置自定义 ID,但它没有改变任何东西。
我正在使用 React-router-dom ,也许这会影响某些事情,我找不到正确的答案,也找不到任何其他来源的文档。
这是我的 App.js 的简化版本:

import Layout from './containers/Layout/Layout';

import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';

import { BrowserRouter, Route, Switch } from 'react-router-dom';

class App extends Component {
render() {
return (
<BrowserRouter>
<Layout>
<Switch>
<Route path="/clientes" exact component={ClientesControls} />
<Route path="/adm" exact component={AdmControls} />
<Route path="/" component={OrcConfig} />
<ToastContainer />
</Switch>
</Layout>
</BrowserRouter>
);
}
}
以下是正在生成错误的组件示例:
import React from 'react';

import axios from '../../../axios';

import { toast } from 'react-toastify';

const listarProdutosItens = props => {

const excluirItemHandler = i => {

let key = props.listaItens[i].key
let categoria = props.listaItens[i].categoria

axios.delete(`/adm/${categoria}/${key}.json`)
.then(res => {
props.fetchLista()
notify('excluído')
})
.catch(error => notify('não excluído'))
}

const notify = (arg) => {
if (arg === 'excluído') {
toast.success('Produto removido com sucesso')
console.log('TESTE')
} else if (arg === 'não excluído') {
toast.error('Erro ao tentar remover produto')
}
}

return (
<div className="row border-bottom mt-2">
<button onClick={() => excluirItemHandler(i)} ></button>
{/* <ToastContainer /> */}
</div>
)

}
正常工作的组件具有相同的 sintaxe。
任何帮助将不胜感激。

最佳答案

我遇到了同样的问题(而且我已经在路由器之外)。这可能无法解决根本问题,但对我有用的是添加自定义 toast id,即更改

toast.success('Produto removido com sucesso')
toast.success('Produto removido com sucesso', {
toastId: 'success1',
})
重复的 toast 不再出现。

关于javascript - React-toastify 显示多个 toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62578112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com