将类与webpack2进行比较并做出反应

时间:2017-05-09 19:47:12

标签: reactjs webpack webpack-2

在升级到webpack 2之前,我可以执行以下操作:

   children: PropTypes.arrayOf((propValue, key) => {
      const type = propValue[key].type
      if (type !== Column && type !== ColumnGroup) {
        throw new Error('<Table> can only have <Column> and <ColumnGroup> as children.')
      }
    })

这似乎不再使用webpack 2.错误总是被抛出。使用webpack 2比较反应类的正确方法是什么?

这是我的.babelrc

{
  "presets": [
    ["es2015", {"modules": false}],
    "react"
  ],
  "plugins": [
    "transform-class-properties",
    "transform-object-rest-spread",
    "react-hot-loader/babel"
  ]
}

更新:

它与将NODE_ENV设置为除生产之外的其他内容有关。我可以在这里重现:https://github.com/dadamssg/react-class-bug/tree/master

1 个答案:

答案 0 :(得分:0)

显然这是由反应热装载机引起的已知问题。

https://github.com/facebook/react/issues/9652

我通过在组件类上添加自己的静态变量并进行比较来解决这个问题。

   children: PropTypes.arrayOf((propValue, key) => {
      const {_componentClass} = propValue[key].type
      if (_componentClass !== Column._componentClass && _componentClass !== ColumnGroup._componentClass) {
        throw new Error('<Table> can only have <Column> and <ColumnGroup> as children.')
      }
    })

不理想,但有效。