reactJS与IE8无法正常工作

时间:2014-09-26 07:56:36

标签: internet-explorer-8 reactjs

reactjs能否正常使用IE8?我正在使用React v0.11.1。

以下代码无法在IE8中运行。适用于所有其他浏览器

SCRIPT438:对象不支持属性或方法' isArray' 文件:react.js,行:17372,列:37 SCRIPT5009:' React'未定义 文件:myreact.js,行:3,列:1 SCRIPT438:对象不支持属性或方法' map' File:JSXTransformer.js,Line:12637,Column: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")
    );

2 个答案:

答案 0 :(得分:4)

您需要使用react docs中所述的以下填充/ pollyfill。 es5-shim将解决您看到的特定isArray错误。

答案 1 :(得分:0)

我已设法使用以下代码在IE8中启动我的React应用程序:

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 html属性

es5-shim/es5-sham将在defer之后加载