首页 > 解决方案 > 传播时在立即创建的对象上分配对象

问题描述

我有点厌倦了以这种方式传递 react 道具

<Comp one={one} two={two} three={three} />

所以我开始做

<Comp {...{one, two, three}} />

但是我意识到这会计算到 Object assig

react.createElement(Comp , Object.assign({
    one: one,
    two: two
  }, {
    __source: {
      fileName: _jsxFileName,
      lineNumber: 95
    },

因为我正在传播一个我刚刚创建的对象,所以我希望编译器/转译器足够聪明,能够意识到这一点并做这样的事情

react.createElement(Comp ,{
    one: one,
    two: two,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 95
    },

是否有任何 Babel 插件来完成此操作,或以任何方式编译?

问候

标签: javascriptreactjs

解决方案


您使用的 Babel 版本和设置非常重要。

使用最新的,我有这个代码:

return (<Child {...{ name: this.name }} />);

变成了这样:

return Object(m.a)(t, e), Object(c.a)(t, [{
    key: "render",
    value: function() {
        return o.a.createElement(k, {
            name: this.name
        })
    }
}])

推荐阅读