2016-06-20 14 views
5

我有一个问题,指定在反应中类型'枚举'的属性。据此间React multiple components文档下面的代码片段应该工作:反应PropTypes.oneOf指定一个枚举不起作用

position : React.PropTypes.oneOf(['rightTop','rightBottom']) 

但我得到以下错误

ERROR in ./app/components/mqttComponents/mqttPresence.jsx 
Module build failed: SyntaxError:/Users/giuseppe/Projects/sw-director/app/components/mqttComponents/mqttPresence.jsx: Unexpected token (68:36) 
66 | propTypes : { 
67 |  //position: React.PropTypes.string.isRequired, 
> 68 |  position : React.PropTypes.oneOf(['rightTop','rightBottom']), 
             ^
69 |  showMqttClientStatus : React.PropTypes.bool.isRequired, 
70 |  mqtt: React.PropTypes.object 
71 | } 

我不知道这是错误?也许是与新的ES6语法有关的东西?

+0

由于这是一个语法错误,这与'oneOf'没有任何关系。 –

+0

@FelixKling我知道,因此'oneOf'的文档和它的实现之间存在不匹配。根据文档是一个函数,它将一个数组作为参数,而不是。那它是什么? –

+0

同样,它的a **语法**错误,而不是* runtime *错误。问题不在于'oneOf'函数或您传入的值。问题在于您在文件中键入的字符(简化)。但是,为什么会在那里得到一个错误,我不知道。 –

回答

13

使用ES6语法,React中的propType应该被定义为静态属性。所以唯一的区别应该在propTypes声明中。

static propTypes = { 
    position : React.PropTypes.oneOf(['rightTop','rightBottom']), 
    showMqttClientStatus : React.PropTypes.bool.isRequired 
} 
+0

它完全可以工作!我知道这是与ES6相关的东西,但我无法修复它...谢谢 –