在升级到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
答案 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.')
}
})
不理想,但有效。