我有一個現有的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