【问题标题】:reactJS with IE8 in not workingreactJS with IE8 in not working
【发布时间】:2014-11-21 04:16:48
【问题描述】:

reactjs 在 IE8 上能正常工作吗?我正在使用 React v0.11.1。

以下代码在 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")
    );

【问题讨论】:

标签: internet-explorer-8 reactjs


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我已经成功地使用以下代码在 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 将在 es5-shim/es5-sham 之后加载,因为 defer html 属性

    【讨论】:

    • 我的项目中没有使用 ES6
    猜你喜欢
    • 2021-09-24
    • 2020-04-04
    • 1970-01-01
    • 2022-12-02
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 2022-12-28
    相关资源
    最近更新 更多