我们正在将Okta 登录小部件集成到我们基于 React 的 web 应用程序中。
示例片段:
var oktaSignIn = new OktaSignIn({baseUrl: baseUrl});
oktaSignIn.renderEl(...)
第一次渲染小部件时对我们来说效果很好,但是在用户登录并再次注销后,webapp 会再次渲染登录组件并尝试renderEl
再次执行以渲染小部件。这会导致引发以下异常:
Backbone.history has already been started
我创建了这个 jsfiddle来演示这个问题。它只是两次实例化一个登录小部件(等待后的第二次)。您可以看到第二次调用导致抛出异常。
https://jsfiddle.net/nudwcroo/6/
目前我的解决方法是在登录组件时重新加载整个 web 应用程序,但这对于单页应用程序来说是不可取的。
这是一个已知的问题?有没有办法在一个 javascript 会话中两次初始化登录小部件?