Как оформить сообщения об ошибках, проверенные Yup в приложении React Formik?

Я строю форму в React, используя Formik и Yup. Я не уверен, как стилизовать динамические сообщения об ошибках, которые появляются для полей электронной почты и пароля. Ниже приведен пример кода:

https://codesandbox.io/s/j3l5w70q9w

Я хочу стилизовать цвета фона, положения и цвета текста, но я не знаю, как вставить собственное имя класса в текст ошибки, который появляется.

Есть идеи?

4 ответа

Ой, неважно, я понял... неловко.

Вы можете стилизовать сообщения об ошибках прямо в форме:

   <p class="styles">{errors.email}</p>

Виноват!

Решение умное, но вводящее в заблуждение. Изменение имени класса, чтобы отразить то, что вы стилизуете, было бы намного яснее. Могу я предложить:

      <div class="error">{errors.email}</div>

Кроме того, если вы используете Formik, это работает:

      <div class='error'>
    <ErrorMessage name="details" />
</div>

И CSS:

      .error {
  font-size: 12px;
  color: var(--red-600);
   margin-top: 0.25rem;
 }

Примечание. Я предпочитаю элементы div, когда основное назначение тега — стилизация содержимого, но это вопрос личных предпочтений.

Вы можете использовать:

/* RowWrapper и InputMask являются компонентами */

      <RowWrapper className='hideDesk'>
   <InputMask 
      inputMask={masks.card}
      inputMode="numeric"
      guide={false}
      id="ccNumber"
      onFocus={focusChange}
      name="number"
      value={data.number}
      placeholder=""
      onChange={onChange}
    />
</RowWrapper>

/* Стиль компонента */

      export const RowWrapper = styled.div`
  span {
      font-size: 13px;
      margin-top: 5px;
      color: #fff;
      background-color: red
    }

/* Styled.div — это компонент, вы можете создать его, используя .div или .p что угодно, это не важно и зависит от проекта, я объясняю, чтобы код лучше понимался */

Я бы добавил, что вам нужно изменить класс на className;) <p className="styles">{errors.email}</p>

Другие вопросы по тегам