某些背景信息:
我有一个使用React,Redux,react-redux的应用程序。我需要在新的浏览器窗口中打开应用程序并保持窗口同步。
我通过在父窗口上将redux存储作为全局来实现这一点。一些代码:
const getStore = () => {
if (window.opener)
return window.opener.__reduxStore__;
if (!window.__reduxStore__) {
window.__reduxStore__ = createStore(todoApp);
}
return window.__reduxStore__;
}
问题:
在IE 11中打开新窗口时,试图改变全局状态我得到Error: Function.prototype.toString: 'this' is not a Function object
。不幸的是,我没有得到堆栈跟踪,而是File: eval code (11084), Line: 31, Column: 3
导致我
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString(){
return typeof this == 'function' && this[SRC] || $toString.call(this);
});
值得注意的是,在IE中(与Chrome或FireFox不同),redux商店对象Symbol(react.element)_<11 random characters>
上有一个属性undefined
我修改了redux-todos-example,展示了这个问题;见GitHub上的差异
不确定如何跟进这个。它是Redux问题,IE问题,关于Symbols的反应问题吗?
此外,IE 不在保护模式下运行。
答案 0 :(得分:1)
我为这种情况创建了一个简单的中间件。 这基本上是使用本地存储来保存最后一个操作并在其他选项卡中调度相同的操作。
https://github.com/AOHUA/redux-state-sync
希望它会对你有所帮助。