С React prop-types можно проверить, содержит ли строка что-то? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть компонент кнопки с цветной опорой. Цветовая метка может быть «первичной», «вторичной» или шестнадцатеричной, например «# 0000ff» Конечно, colour: PropTypes.string подойдет, но в идеале мне нужно проверить случайные строки. Возможно ли что-то похожее на приведенное ниже?

Button.propTypes = {
  colour: PropTypes.oneOf(['primary', 'secondary', PropTypes.string.includes('#')]),
};

Или функция для проверки длины строки до 7 символов с первым символом '#'?

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете написать свой собственный валидатор.

Подробнее см. В React docs .


Button.propTypes = {
  colour: function(props, propName, componentName) {
    if (props[propName] !== 'primary' &&
        props[propName] !== 'secondary' &&
        !/^#[0-9a-fA-F]{6}$/.test(props[propName])) {
      return new Error(
        'Invalid prop `' + propName + '` supplied to' +
        ' `' + componentName + '`. Must be a valid color code.'
      );
    }
  }
}
...