在我的React/NextJS应用程序中,我添加了一个新组件来显示FreshDesk小部件。
这个组件应该只显示在一些特定的页面登录后,但当我从应用程序注销的小部件仍然可见,直到我刷新页面
该组件
从'next/script'导入脚本;
const FreshDesk = () => {
const { freshDesk } = useConfig();
return (
<>
{console.log(freshDesk)}
<Script
src={`https://widget.freshworks.com/widgets/${freshDesk}.js`}
strategy="lazyOnload"
/>
<Script id="my-script" strategy="afterInteractive">
{` window.fwSettings={
'widget_id':${freshDesk},
};
!function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}()
`}
</Script>
</>
);
};
export default FreshDesk;
当它需要的时候,它被称为<FreshDesk />
。
登录页面没有小部件调用,但一旦我注销,小部件仍然在那里,直到我刷新,不知道该怎么做。
3条答案
按热度按时间dgjrabp21#
看起来您可以使用
FreshworksWidget("destroy")
来销毁小部件。来源
我建议您添加以下
useEffect
(免责声明:我不知道图书馆,所以这可能不会完美地工作)bfrts1fy2#
决定通过展示我发现对我有效的解决方案来回答我自己的问题。
我所做的是在
login
组件中添加以下代码在组件中,我使用了一个小部件
这样,我只是隐藏它从我的登录页面,但显示其他地方
r6l8ljro3#
销毁freshwork小部件的最好方法是这样的。我用的是Angular14,它对我很有效