【问题标题】:Reactjs - the spread operator giving errorReactjs - 传播运算符给出错误
【发布时间】:2015-06-19 08:53:01
【问题描述】:

我正在尝试在 react.js 中使用扩展运算符,但在 Chrome 中收到错误 Unexpected token ...

我在此代码的第 3 行遇到错误:

var Btn=React.createClass({
    render: function(){
        var { className, ...other }=this.props;
        return (<a  {...other} className={joinClasses(className,"btn")} href="#" >{this.props.children}</a>);
    }
});

并使用 JSXtransformer.js 编译 JSX 代码。

我做错了什么导致错误?

【问题讨论】:

    标签: javascript reactjs react-jsx


    【解决方案1】:

    Chrome 尚不支持 ... 令牌。

    请参阅this page 了解支持的浏览器(或见下文)。

    数组字面量中的扩展操作

    • 铬 - 46
    • 火狐 - 16
    • Internet Explorer - 否
    • 歌剧 - 否
    • Safari - 7.1

    函数调用中的扩展操作

    • 铬 - 46
    • 火狐 - 27
    • Internet Explorer - 否
    • 歌剧 - 否
    • Safari - 7.1

    解构中的展开操作

    • 铬 - 否
    • 火狐 - 34

    请参阅this answer 了解如何设置 JSX 转换器以使用“ES6 转换”。

    【讨论】:

    • 这是 JSX 代码而不是 JS,所以我认为 ... 符号是由 react 实现的,而不是由浏览器实现的。不是这样吗?
    • JSX 将您的 html-ish 内容转换为 React.DOM 命名空间上的函数调用,但仅此而已。所以没有
    • 这里可以看到生成的js:facebook.github.io/react/jsx-compiler.html
    • 在该页面(jsx 编译器)上有一个 Enable ES6 transforms (--harmony) 选项 - 将代码更改为没有 ... 的内容 - 我认为这就是我需要的。
    • 想通了——我所要做的就是:使用&lt;script type="text/jsx;harmony=true"&gt; 而不仅仅是&lt;script type="text/jsx"&gt; 来启用harmony 模式。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-07-12
    • 2018-12-30
    • 1970-01-01
    • 2018-05-20
    • 2019-01-25
    • 2021-04-18
    • 2013-06-24
    • 2020-02-21
    相关资源
    最近更新 更多