2017-01-24 16 views
1
completed: React.PropTypes.number, 

Могу ли я указать минимальное и максимальное к числу props в React компонент.React.PropTypes.number поплавок с минимальной и максимальной

ожидал что-то вроде следующего:

completed: React.PropTypes.numberBetween(min, max), 

сгенерировать массив для определения диапазона

попытка:

completed: React.PropTypes.oneOf(Array.from({length: max -min+1, (v, k) => k + min})), 

Однако, я хочу completed реквизита принимать также плавать, как ну, тогда как теперь он принимает только целое число.

Как сделать следующие ограничения в сочетании:

  • prop является число (целое число, с плавающей точкой, двойной, ... любое число)

  • между MIN и MAX

+2

просто хотел сказать вам, 'propTypes проверяется только в mode' развития, как некоторые, если и достигли этого, то это условие будет проверяться в режиме разработки только не в прод. проверьте это: https://facebook.github.io/react/docs/typechecking-with-proptypes.html –

ответ

4

Вы можете использовать пользовательскую проверку.

completed: function(props, propName, componentName) { 
    if(props[propName] < MIN || props[propName] > MAX) { 
     return new Error('Invalid'); 
    } 
} 
+0

cool! ......... –

3

Написав Custom Props Validator, вы можете это сделать. попробуйте это:

num: function(props, propName, componentName) { 
    if(typeof props[propName] != 'number'){ 
     return new Error ('Invalid type of `' + propName + '` supplied to' + ' `' + componentName + '`. Validation failed.'); 
    }else if (props[propName] < MIN || props[propName] > MAX) { 
     return new Error('Invalid prop `' + propName + '` supplied to' + ' `' + componentName + '`. Validation failed.'); 
    } 
},