Componente de Número de Cartão de Crédito Causa Re-renderização e Perda de Dados #219
-
Eu estou utilizando o Porém, ao executar o Como posso resolver isso? A documentação sobre como implementar os métodos core está bem escrita porém com poucas coisas sobre integração com React... Podem me ajudar? import { CardNumber } from '@mercadopago/sdk-react'
import type {
BinChangeArg,
ValidityChangeArg,
} from '@mercadopago/sdk-react/secureFields/util/types'
import { memo } from 'react'
export const CreditCardField = memo(function CreditCardField({
onValidityChange,
onBinChange,
}: {
onValidityChange: (argument: ValidityChangeArg<'cardNumber'>) => void
onBinChange: (argument: BinChangeArg) => void
}) {
return (
<CardNumber
onBinChange={onBinChange}
onValidityChange={onValidityChange}
style={{
height: '100%',
width: '100%',
fontSize: '0.875rem',
placeholderColor: 'var(--muted-foreground)',
color: '#fff',
}}
placeholder="Número do cartão"
/>
)
})
CreditCardField.displayName = 'CreditCardField' |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
Oi, Guilherme! Pode ser uma falha no ciclo de vida da aplicação que está disparando renderização inapropriada nesse momento. Indico alguns artigos que podem ajudar a lidar com esse ponto: Caso não dê certo, quantos dos primeiros dígitos do cartão você armazena? |
Beta Was this translation helpful? Give feedback.
-
Olá!!! Sim, é o ciclo de vida do componente, dei uma olhada nos artigos, nada pode me ajudar. Os números é o valor retornado pelo onBinChange, exemplo: 50314332, lembrando que apenas quero armazenar em estado local para utilizar para gerar o card token. |
Beta Was this translation helpful? Give feedback.
-
O problema foi resolvido, o SDK não é o problema. Como eu resolvi: function handleBinChange(argument: BinChangeArg) {
setValue('sixFirstDigit', argument.bin ?? '')
} Também criei um <Input
id="sixFirstDigit"
type="hidden"
placeholder="Digite os 6 primeiros dígitos do cartão"
{...register('sixFirstDigit')}
/> E agora eu consigo recuperar tranquilamente no meu componente de exibição de parcelas sem re-renderizar o SDK.... Sendo assim deixo minha dica para os devs do SDK: Fazer um componente de seleção de parcelas que já identifica as parcelas assim que o usuário digitar o número no |
Beta Was this translation helpful? Give feedback.
O problema foi resolvido, o SDK não é o problema.
Como eu resolvi:
Armazenei o valor do onBinChange
value?.bin
nosetValue
doreact-hook-form
:Também criei um
input
comtype="hidden"
E agora eu consigo recuperar tranquilamente no meu componente de exibição de parcelas sem re-renderizar o SDK....
Sendo assim deixo minha dica para os devs do SDK: Fazer um componente de seleção de parcelas que já identifica as parcelas assim que o usuário digitar o número no
…