2014-09-26 101 views
2

reactjs能否正常使用IE8?我正在使用React v0.11.1。reactJS与IE8无法正常工作

以下代码不适用于IE8。适用于所有其他浏览器精细

SCRIPT438:对象不支持属性或方法 'IsArray的' 文件:react.js,行:17372,列:37 SCRIPT5009: '阵营' 是未定义 文件:myreact .js文件,行:3列:1 SCRIPT438:对象不支持属性或方法 '地图' 文件:JSXTransformer.js,行:12637,列:3

/** @jsx React.DOM */ 

var MyComponent = React.createClass({displayName: 'MyComponent', 

    getDefaultProps:function(){ 

      return{ 

       text:"", 
       numbers:0 
      } 

    }, 

    getInitialState:function(){ 


     return {txt:"initial", id:0} 
    }, 

    updateText: function(event){ 

     this.setState({text:event.target.value}) 
    }, 

    propTypes:{ 

     text:React.PropTypes.string, 

     numbers: React.PropTypes.number.isRequired 
    }, 



    render:function(){ 

     return (
        React.DOM.div(null, 
         Widget({text: this.state.text, update: this.updateText}), 
         Widget({text: this.state.text, update: this.updateText}) 
        ) 
      ) 
    } 

}); 

var Widget = React.createClass({displayName: 'Widget', render:function(){ 

     return(
       React.DOM.div(null, 
       React.DOM.input({type: "text", onChange: this.props.update}), 
       React.DOM.div(null, this.props.text) 

      ) 
      ) 
    } 

}); 

React.renderComponent(
    MyComponent({text: "HI there", numbers: 34}), 
     document.getElementById("content") 
    ); 
+4

可能重复[为什么IE8在使用Facebook的React.js时得到脚本错误](http://stackoverflow.com/questions/19259427/why-is-ie8-getting-a-script -error-when-using-facebooks-react-js) – chiccodoro 2014-09-26 08:00:37

+0

http://facebook.github.io/react/docs/working-with-the-browser.html#browser-support-and-polyfills – David 2014-09-26 10:49:15

+0

感谢您的评论,我包括es5Shim.js和es5Sham.js。现在它工作正常。 – rishinarang 2014-09-26 11:39:11

回答

4

您需要使用如在中所述的垫片/ pollyfill之后。 es5-shim将解决您所看到的特定isArray错误。

0

我已经成功使用下面的代码来启动我的应用程序作出反应在IE8:

App.js:

require('core-js'); //Important! 
var React = require('react'); 
var ReactDOM = require('react-dom'); 
var Application = React.createClass({ ... }); 
ReactDOM.render(React.createElement(Application,null), document.getElementById("app-container")); 


的index.html:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-sham.min.js"></script> 
    <script type="text/javascript" src="bundle.js" defer></script> 
</head> 
<body> 
<div id="app-container"></div> 
</body> 
</html> 


评论:bundle.js将在之后加载es5-shim/es5-sham bec使用defer html属性

+0

我没有在我的项目中使用ES6 – 2016-03-18 10:02:32