2015-10-11 4 views
0

Я определил статический массив, который задает поддерживаемые типы полей ввода. Я сделал их статичными, потому что 1) они никогда не меняются, и 2) я хочу использовать их в разных компонентах.Доступ к статическим методам компонента React в propTypes недопустим

Вот что у меня есть.

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

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

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

} 

Я получаю ошибку в консоли браузера заключается в следующем:

Uncaught ReferenceError: Field is not defined 

Почему доступ к статическому полю внутри propTypes не работает? Есть ли лучшее решение?

ответ

0

Реагировать принимает statics свойства и создает свойства на результирующем классе компонентов, как это определяется, поэтому они еще не доступны в то время, propTypes оценивается. Самое простое решение - просто извлечь их; вы можете поместить их на statics для использования другими компонентами:

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

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

    statics: { 
     types: fieldTypes 
    }, 

    render() { /* ... */ } 
}); 
Смежные вопросы