Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como utilizar "react-input-mask" e "react bootstrap" simultaneamente

Estou iniciando com react, e utilizando a implementação do bootstrap para o React, "react-bootstrap", mas me deparei com um problema pelo qual não estou encontrando solução, que é utilizar uma lib de máscaras de formulários para agilizar o desenvolvimento, encontrei o "react-input-mask" que parece ser a mais utilizada, e não consigo usar as duas libs simultaneamente, já que o ambas utilizam um wrapper para renderizar os input sendo:

"react-bootstrap":

<Form>
  <Form.Group className="mb-3" controlId="formBasicEmail">
    <Form.Label>Email address</Form.Label>
    <Form.Control type="email" placeholder="Enter email" />
    <Form.Text className="text-muted">
      We'll never share your email with anyone else.
    </Form.Text>
  </Form.Group>

"react-input-mask":

<InputMask mask="99/99/9999" placeholder="Enter birthdate" />

Alguém já passou por essa situação?, para os mais experientes com react, como acha qual seria a melhor abordagem ao se trabalhar com máscaras no react?

Desde já agradecido!

1 resposta
solução!

Oi Bruno, tudo bem?

Desculpe a demora em retornar.

De fato, essas duas bibliotecas utilizam wrappers diferentes para renderizar os inputs, e isso pode causar conflitos. Mas não se preocupe, existem algumas soluções possíveis para essa situação.

Uma primeira opção é utilizar o componente "FormControl" do "react-bootstrap" juntamente com o "react-input-mask". Esse componente permite que você utilize as máscaras de formulários do "react-input-mask" dentro do wrapper do "react-bootstrap". Para isso, basta importar o componente "FormControl" do "react-bootstrap" e o componente "InputMask" do "react-input-mask", e utilizar o componente "InputMask" dentro do componente "FormControl", como no exemplo abaixo:

import { FormControl } from 'react-bootstrap';
import InputMask from 'react-input-mask';

<FormControl
  type="text"
  as={InputMask}
  mask="99/99/9999"
  placeholder="Enter birthdate"
/>

Dessa forma, o "InputMask" será renderizado dentro do wrapper do "FormControl", permitindo que você utilize as máscaras de formulários do "react-input-mask" em conjunto com o "react-bootstrap".

Outra opção é criar um componente personalizado que combine o "react-bootstrap" e o "react-input-mask". Para isso, basta criar um novo componente que utilize o "FormControl" do "react-bootstrap" e o "InputMask" do "react-input-mask", como no exemplo abaixo:

import { FormControl } from 'react-bootstrap';
import InputMask from 'react-input-mask';

const MaskedFormControl = ({ mask, ...props }) => (
  <FormControl
    {...props}
    as={InputMask}
    mask={mask}
  />
);

// Exemplo de uso:
<MaskedFormControl
  type="text"
  mask="99/99/9999"
  placeholder="Enter birthdate"
/>

Nesse exemplo, criamos um novo componente chamado "MaskedFormControl", que recebe a propriedade "mask" do "react-input-mask" e repassa para o componente "InputMask" dentro do "FormControl" do "react-bootstrap". Dessa forma, você pode utilizar o "MaskedFormControl" no lugar do "FormControl" do "react-bootstrap", e terá as máscaras de formulários do "react-input-mask" disponíveis.

Essas são duas opções possíveis para utilizar o "react-bootstrap" e o "react-input-mask" simultaneamente em seu projeto em React. Espero que essas soluções tenham sido úteis para você. Lembre-se de sempre verificar a documentação de ambas as bibliotecas e fazer testes para garantir que tudo esteja funcionando corretamente.

Espero que tenha te ajudado.

Um abraço e bons estudos.