2014-12-19 2 views
2

Я использую ReTT PropTypes и Flow type checker, но у меня возникли проблемы с получением дополнительной функции prop для проверки типа. Вот пример:Дополнительная функция prop в компоненте React Проверка типа потока Ошибка

var Example = React.createClass({ 
    propTypes: { 
    exampleFn: React.PropTypes.func 
    }, 

    handleClick: function() { 
    if (this.props.exampleFn) { 
     this.props.exampleFn(); 
    } 
    }, 

    render: function() { 
    return <a onClick={this.handleClick}>Click here</a>; 
    } 
}); 

Хотя я проверяю this.props.exampleFn не является нулевым, бегая тип проверки Flow против этого кода дает мне ошибку

call of method exampleFn 
Function cannot be called on possibly null or undefined value 

я пробовал различные варианты, такие как
if (this.props.exampleFn !== null && this.props.exampleFn !== undefined) {...}
или
this.props.exampleFn && this.props.exampleFn()
и т.д., чтобы знать, что мы охраняя против, возможно, нулевой/неопределенное значение, но я ничего не могу найти это работает. Конечно, изменение типа prop на React.PropTypes.func.isRequired не приводит к ошибкам, но я хотел бы сохранить эту опцию опциональной.

Как я могу получить опциональную функцию prop для проверки типа?

+0

. 'If (этот.props.exampleFn! = Null)' работа? –

ответ

4

Вот один из способов, по которым мы обнаружили, что PropType необязателен, но все еще имеет пропуск проверки типа потока.

... 

handleClick: function() { 
    var exampleFn = this.props.exampleFn || null; 
    if (exampleFn) { 
    exampleFn(); 
    } 
}, 

...