对象作为反应子对象无效(在React 15.4.1的Internet Explorer 11中)

LOK*_*321 24 javascript ecmascript-6 internet-explorer-11 reactjs redux

对象无效作为React子对象(找到:具有键{$$ typeof,type,key,ref,props,_owner,_store}的对象).如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象.检查渲染方法App.

AppContainer:

const mapDispatchToProps = (dispatch) => {
    return {

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

零件:

class App extends Component {
    render() {
        return (
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

以上是app.js的渲染功能.此代码在谷歌浏览器中运行良好,但在访问Internet Explorer时它无法正常工作,它会抛出上述错误.

Fra*_*rel 32

自从React 15.4与IE11一起出现问题

如果你还有这个问题,你可以看看这个关于React 15.4和IE11的#8379问题.我遇到了与webpack dev模式/ IE11/React 15.4相同的问题,似乎React和ReactDom都使用了他们的Symbol polyfill版本(这是15.4的新版本):

某种程度上反应和反应不再"同意" $$typeof价值

应该是typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103.

我通过重新排序polyfillreact/ react-dom确保在React和ReactDom的符号之前加载polyfill符号来解决这个问题......现在他们在$$ typeof值上"同意".

例如webpack:

entry: [
 'babel-polyfill', // Load this first
 'react-hot-loader/patch', // This package already requires/loads react (but not react-dom). It must be loaded after babel-polyfill to ensure both react and react-dom use the same Symbol.
 'react', // Include this to enforce order
 'react-dom', // Include this to enforce order
 './index.js' // Path to your app's entry file
]
Run Code Online (Sandbox Code Playgroud)

  • @FrançoisMaturel似乎不正确.填料必须在其他任何东西之前,包括反应和反应 (3认同)
  • 我已经将我的babel-polyfill import语句移到了我的反应和react-dom导入之后,现在我的项目正在运行.任何对Object.assign()的调用或者polyfill覆盖的任何其他内容都没有副作用.如果有其他人,请说出来. (3认同)
  • 您必须确保在加载React和ReactDom之后加载ES6.polyfill()代码.尝试调试以查看首先加载的lib,然后根据需要更改webpack配置. (2认同)

Jai*_*udo 7

在我使用React Native的情况下,我们将这个神秘的bug拖了几个星期才出现在没有附加调试器的Android版本上.

罪魁祸首是一个

import 'core-js'

在我们的根组件上,似乎polyfill搞砸了

解决方案是简单地删除它,因为在我的情况下不再需要它

相关部分 package.json

  "react-native": "0.44.2",
  "react": "16.0.0-alpha.6",
Run Code Online (Sandbox Code Playgroud)