我有一个现有的ExtJS应用程序,我从4.x升级到6.2.0。我做了一个简单的存储供应商制定者,我通过了我的Ext.onReady()
块,看起来像下面这样:Ext.state.Manager.setProvider()行为6.2与4.x
Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider',{}));
当我换到6.2.0,我得到的错误:
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设置,另一个由我的客户端代码设置?有没有更好的方法来处理这个问题?
我会跟踪它设置提供者的位置。在“Ext.util.LocalStorage.cache”中设置id的地方留一个断点。 –
你能举例[在小提琴](https://fiddle.sencha.com/)? – madreason
你是否尝试过在初始化阶段将setter(如文档中所述)放置? (而不是当ext准备就绪时)http://docs.sencha.com/extjs/6.2.0/classic/Ext.state.Manager.html – devbnz