首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >6.2与4.x中的ExtJS Ext.state.Manager.setProvider()行为

6.2与4.x中的ExtJS Ext.state.Manager.setProvider()行为
EN

Stack Overflow用户
提问于 2016-10-01 04:37:26
回答 1查看 460关注 0票数 2

我有一个现有的ExtJS应用程序,我要从4.x升级到6.2.0。我有一个简单的存储提供程序设置器,我将其传递到我的Ext.onReady()块中,如下所示:

代码语言:javascript
复制
Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider',{}));

当我切换到6.2.0时,我会得到以下错误:

代码语言:javascript
复制
ext-all-rtl-debug.js:9389 [E] Ext.util.LocalStorage.constructor(): Cannot create duplicate instance of local store "ext". Use Ext.util.LocalStorage.get() to share instances.

所以我必须做的,我认为是修复的,是这样的:

Ext.state.Manager.setProvider(Ext.util.LocalStorage.get('id'));

不过,我在这里担心的是,我只是将创可贴应用到问题上,而不是真正地解决问题。我没有在其他任何地方显式地设置提供程序,我所做的就是将ExtJS库从4.x换到6.2.0以获得该错误。如果它是在6.2.0初始化过程中首先在其他地方创建的,那么就像前面提到的,我得到了一个duplicate错误。

6.2.0中的哪些更改导致了此行为?现在是否设置了两个提供程序,一个由ExtJS设置,另一个使用我的客户端代码设置?有没有一种更干净的方式来处理这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-10-17 00:13:18

此错误的前提条件在ExtJS 4和ExtJS 6中是相同的。相应的文件没有更改:请比较ExtJS 4.2.4 versionExtJS 6.2.0 version

因此,您的应用程序必须对此负责。在(升级后的)代码中的某处,必须创建一个Ext.util.LocalStorage实例。因为这个错误是在ID已经注册并且注册只在Ext.util.LocalStorage类的构造函数中完成的情况下抛出的,所以我建议在那里设置一个断点来检查堆栈跟踪哪个函数调用了构造函数方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39799719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档