Есть ли лучший способ написать эту проверку, чтобы увидеть, существует ли значение в опоре в реакции? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть это свойство, входящее в мой компонент, errors, который является пустым объектом, если в моей форме нет ошибок. Если есть ошибки, они будут добавлены к объекту. Мой вопрос: я проверяю свойство c объекта, прямо сейчас я проверяю, не определено ли оно. Есть ли лучший способ выполнить такую ​​проверку? Вот фрагмент кода

const SelectOverdrawnFunds = ({
  overdrawnFunds = [],
  options,
  setFieldValue,
  setErrors,
  errors,
}) => (
  <>
    {overdrawnFunds.map((select, index) => {
      const error =
        errors &&
        errors.overdrawnFunds !== undefined &&
        errors.overdrawnFunds[index] !== undefined;
      return (
        <SearchSelect
          key={index}
          name={`overdrawnFunds[${index}]`}
          label="Fund"
          options={options}
          TextFieldProps={{
            error: error,
            helperText: error ? 'Required' : '',
          }}
        />
      );
    })}
...
SelectOverdrawnFunds.propTypes = {
  overdrawnFunds: PropTypes.array,
  options: PropTypes.array,
  setFieldValue: PropTypes.func,
  setErrors: PropTypes.func,
  errors: PropTypes.object,
};

export default SelectOverdrawnFunds;

1 Ответ

1 голос
/ 29 мая 2020

Да, вы можете использовать опциональную цепочку, например,

const error = !!errors?.overdrawnFunds?.[index];
//or
const error = Boolean(errors?.overdrawnFunds?.[index]);

, или, если вы хотите строго сравнить с undefined

const error = errors?.overdrawnFunds?.[index] !== undefined;

Вы можете найти дополнительную информацию о дополнительной цепочке на MDN

...