我有一个名为agent.ts的文件,其中包含axios拦截器,我在这些拦截器中观察任何〉= 400和〈= 500的状态代码,当出现这样的错误时,我调用react-toastify toast。
到目前为止,一切都运行得很好。不过我希望能够做的是使用html作为消息的主体。通常我会通过创建一个自定义组件,然后使用该组件作为吐司消息的主体来实现这一点。但是因为我在常规的typescript文件中使用了react-toastify组件的outsode,所以我得到了一个编译错误。
下面是我的部分代码:
axios.interceptors.response.use(undefined, async (error) => {
if (error.message === 'Network Error' && !error.response) {
toast.error('Network error - make sure API is running!');
}
const { status, data } = error.response;
if (status >= 400 && status < 500) {
if (!data || !data.errors) {
toast.error(`${status} API error. Please check the terminal!`);
return;
}
console.warn('API Errors:', data.errors);
Object.keys(data.errors).forEach(function (key) {
toast.warn(data.errors[key].toString());
});
}
if (status === 500) {
toast.error('Server error - check the terminal for more info!');
}
throw error.response;
});
我附上了我看到的编译错误的屏幕截图:
你能告诉我什么是最好的方法吗?
2条答案
按热度按时间v8wbuo2f1#
如果你读过API docs,在
options.style
下有一个部分允许自定义样式,以及添加自定义类名。要完成你所尝试的,你也可以使用toast.custom
:uqcuzwp82#
我设法找到了解决方案。基本上我可以通过将代理的文件类型从.ts更改为. tsx来使用react组件。就是这样,你我不需要其他任何东西。
如果这种方法由于某种原因不起作用,作为一种替代方法,我也可以直接使用React.createElement():