Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

185
Visualizações
Una forma de restablecer el contenido cuando el modal está cerrado en React

Tener este modal que tiene algunas entradas que se validan con forma de gancho de reacción:

 import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import * as yup from 'yup'; import { Modal, Footer, Input, Textarea } from '../ui-components'; import { usePostData } from '../lib/hooks/use-post-data'; const schema = yup.object().shape({ input: yup.string(), description: yup.string() }); export interface MyModalProps { open: boolean; toggle: () => void; } export function MyModal({ open, toggle }: MyModalProps) { const emptyInput = { input: '', description: '' }; const { handleSubmit, reset, register } = useForm({ resolver: yupResolver(schema) }); const { mutate: postDta } = usePostData(); const onAddSubmit = (data) => { postSignalMapping(data); toggle(); reset(emptyInput); }; const onCancelModal = () => { toggle(); reset(emptyInput); }; return ( <Modal title='my modal' open={open} onClose={toggle} footer={<Footer onSubmit={handleSubmit(onAddSubmit)} onCancel={onCancelModal} />} > <div> <Input inputId='input' label='input' {...register('input')} /> <Textarea label='description' {...register('description')} /> </div> </Modal> ); } export default MyModal;

Funciona bastante bien además de la parte de reset que debe hacerse cuando el modal está cerrado, a veces tiene algunos errores.

¿Hay alguna manera de hacer que se vuelva a renderizar después de que se cierre el modal?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Parece que también debe proporcionar valores predeterminados para el useForm .

reset documentos

  • Deberá pasar useForm defaultValues restablecer el valor de los componentes del Controller .

  • Al invocar reset({ value }) sin proporcionar useForm defaultValues la biblioteca reemplazará los valores defaultValues con un objeto de value de clon superficial que proporcione (no deepClone) .

     // ❌ avoid the following with deep nested default values const defaultValues = { object: { deepNest: { file: new File() } } }; useForm({ defaultValues }); reset(defaultValues); // share the same reference // ✅ it's safer with the following, as we only doing shallow clone with defaultValues useForm({ deepNest: { file: new File() } }); reset({ deepNest: { file: new File() } });

Use la sintaxis extendida para crear copias superficiales del objeto de valores predeterminados de emptyInput .

 export function MyModal({ open, toggle }: MyModalProps) { const emptyInput = { input: '', description: '' }; const { handleSubmit, reset, register } = useForm({ defaultValues: { ...emptyInput }, resolver: yupResolver(schema) }); ... const onAddSubmit = (data) => { postSignalMapping(data); toggle(); reset({ ...emptyInput }); }; const onCancelModal = () => { toggle(); reset({ ...emptyInput }); }; ... }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda