Должен ли я установить свойства реакции по умолчанию на ноль - PullRequest
0 голосов
/ 08 июня 2018

Я новичок, чтобы реагировать, и я привязываюсь к коду как можно короче.Мы пишем компоненты реакции со многими реквизитами.Проблема в том, что мои коллеги продолжают заполнять код, который мне кажется совершенно ненужным.Так правильно ли устанавливать null для всех доступных значений или использовать propTypes только для определения типов свойств?Потому что я не вижу таких примеров использования и считаю, что это плохая практика.

FormAutonumeric.defaultProps = {
    validationRules: null,
    onBlur: null,
    onFocus: null,
    inputClasses: null,
    showErrors: false,
    numericType: null,
    isFormValid: null,
    placeholder: null,
    onChange: null,
    disabled: null,
    children: null,
    vMin: null,
    vMax: null,
    prefix: null,
    suffix: null
};


FormAutonumeric.propTypes = {
    validationRules: PropTypes.shape({
        [PropTypes.string]: PropTypes.oneOfType([
            PropTypes.string,
            PropTypes.number,
            PropTypes.bool
        ])
    }),
    onBlur: PropTypes.func,
    onFocus: PropTypes.func,
    inputClasses: PropTypes.string,
    showErrors: PropTypes.bool,
    numericType: PropTypes.string,
    value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
    isFormValid: PropTypes.func,
    id: PropTypes.string.isRequired,
    placeholder: PropTypes.string,
    onKeyUp: PropTypes.func.isRequired,
    onChange: PropTypes.func,
    disabled: PropTypes.bool,
    children: PropTypes.element,
    vMin: PropTypes.string,
    vMax: PropTypes.string,
    prefix: PropTypes.string,
    suffix: PropTypes.string
};

1 Ответ

0 голосов
/ 08 июня 2018

Я согласен с комментарием Рауля Рене.Любой неиспользованный реквизит будет undefined, который, вероятно, не будет иметь никакого значения в вашем коде, если вы не проводите строгие проверки, такие как myProp !== null или что-то еще.

Если вы хотите продолжать использовать defaultProps, ноТем не менее, можно немного сократить свой код, вы всегда можете добавить свойство isRequired к тем реквизитам, которые абсолютно необходимы для работы вашего компонента.Например, ваш компонент, вероятно, не будет работать должным образом, если реквизиты onBlur и onFocus не будут переданы, тогда как он, вероятно, будет работать нормально, если children или disabled явно не переданы.

Вот как будет выглядеть это изменение:

onBlur: PropTypes.func.isRequired,
onFocus: PropTypes.func.isRequired,

и удалите эти реквизиты из вашего определения defaultProps.«Резервный» реквизит не имеет смысла, если реквизит «требуется» для явной передачи компоненту.

Я не знаю, как ваш код выглядит для вашего компонента, но названия реквизитов предполагают, чтос этим изменением ваше defaultProps определение может быть уменьшено как минимум наполовину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...