不允许在propTypes中访问React组件的静态方法

时间:2015-10-11 17:01:47

标签: reactjs

我定义了一个静态数组,它指定了支持的输入字段类型。我让它们变得静止,因为1)它们永远不会改变,2)我想在不同的组件中使用它们。

这就是我所拥有的。

Field = React.createClass({
    propTypes: {
      type: React.PropTypes.oneOf(Field.types),
    },

    statics: {
        types: ['text', 'url']
    },

    render() { /* ... */ }

}

我在浏览器控制台中遇到的错误是:

Uncaught ReferenceError: Field is not defined

为什么访问propTypes内的静态字段不起作用?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

React接受statics属性并在生成的组件类中定义属性,因此在评估propTypes时它们尚未可用。最简单的解决方案就是提取它们;您仍然可以将它们放在statics上以供其他组件使用:

var fieldTypes= ['text', 'url'];

var Field = React.createClass({
    propTypes: {
      type: React.PropTypes.oneOf(fieldTypes),
    },

    statics: {
        types: fieldTypes
    },

    render() { /* ... */ }
});