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

110
Visualizações
reaccionar reactquerry y formik initialvalues asincrónico problema
const {productid} = useParams() const {isLoading,isErr,data,err} =useQuery([`Admin`,productid],() => fetchProduct(productid)) const formik = useFormik({ initialValues: {title:data?.title, description:`${data?.description}`, price:`${data?.price}`, photos:data?.photos}, onSubmit:()=>{} } )

en este código, tengo un retraso por este motivo, formik cada vez que me envía un valor nulo para que vea los valores iniciales de formik, es necesario que vengan datos cargados.

si puedo usarQuerry.then(formik) mi problema está resuelto. pero conoces las reglas de reacción, entonces, ¿cómo puedo resolver este problema?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No creo que un useEffect que establezca valores cada vez que cambien los data sea lo correcto en muchos casos, porque con react-query, pueden ocurrir actualizaciones en segundo plano que podrían cambiar los data y luego se sobrescribirá la entrada del usuario.

He entrado en detalles sobre un par de enfoques en mi blog: https://tkdodo.eu/blog/react-query-and-forms

Lo más simple es realmente dividirlo en dos componentes:

 const { data } = useQuery(...) if (!data) return 'loading...' return <Form initialData={data} />

luego, dentro de Form , puede llamar a useFormik y establecer los valores iniciales, ya que solo se montará tan pronto como los datos estén disponibles.

about 4 years ago · Santiago Trujillo Relatório

0

encontré la solución gracias a @Sergey-Sosunov

 const {isLoading,isErr,data,err} =useQuery([`Admin`,productid],() => fetchProduct(productid)) const initialData ={title:data?.title, description:data?.description, price:data?.price, photos:data?.photos} useEffect(()=>{ formik.setValues({...initialData}) },[data]) const formik = useFormik({ enableReinitialize: true, initialValues: initialData, onSubmit:()=>{} } )
about 4 years ago · Santiago Trujillo 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