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

198
Visualizações
fetch api ocurre antes de enviar el formulario

Uso react js como framework frontend y laravel como framework backend. También uso proxy. Tengo una función que maneja el envío de mi formulario. Cada vez que cargo mi página de formulario, recibo dos respuestas en mi consola, aunque todavía no he presionado el botón Enviar. Este es mi componente CreateDaerah. Yo uso componente de función

 import React, { useEffect, useState} from 'react'; const CreateDaerah = () => { const [nama, setNama] = useState(''); const handleSubmit = (url = '', data = {}) => { fetch(url, { method: "POST", body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }) .then(response => console.log(response)) .catch(err => console.error(err));; } return( <div className="card-create"> <form onSubmit={handleSubmit(`/api/provinsi`, nama)}> <h1>Form Provinsi</h1> <label htmlFor="nama">Nama</label> <input type="text" className="nama-provinsi" name="nama" placeholder="masukkan nama" /> <button type="submit">Submit</button> </form> </div> ); }

Además, ¿cómo puedo obtener el valor de nama de la entrada? ¿Debo usar el atributo onChange?

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

0

Esto se debe a que está llamando a handleSubmit inmediatamente en cada procesamiento en lugar de proporcionar una función para llamar en el envío. En su lugar, debe actualizarlo a algo como:

 import React, { useEffect, useState} from 'react'; const CreateDaerah = () => { const [nama, setNama] = useState(''); const handleSubmit = (url = '', data = {}) => { fetch(url, { method: "POST", body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }) .then(response => console.log(response)) .catch(err => console.error(err));; } return( <div className="card-create"> <form onSubmit={() => handleSubmit(`/api/provinsi`, nama)}> <h1>Form Provinsi</h1> <label htmlFor="nama">Nama</label> <input type="text" className="nama-provinsi" name="nama" placeholder="masukkan nama" /> <button type="submit">Submit</button> </form> </div> ); }
about 4 years ago · Juan Pablo Isaza Relatório

0

  1. Está llamando a la función handleSubmit inmediatamente en el renderizado, por lo que debe pasar una referencia a la función en su lugar con una devolución de llamada, o simplemente pasar la referencia de la función sin esos argumentos.

  2. Probablemente no aprobaría esos argumentos. Ni siquiera usaría un elemento de form ya que los elementos no necesitan estar envueltos en él. Declararía la URL en el componente y colocaría handleSubmit en el botón. De esa manera, no tiene que lidiar con el formulario que actualiza la página.

  3. Coloque un controlador onChange en su entrada que llame a una función que actualice el estado y haga que el valor de esa entrada sea el resultado del estado.

Aquí hay un ejemplo de trabajo más corto.

 const { useState } = React; function Example() { const [ numa, setNuma ] = useState(''); const url = `/api/provinsi`; function handleInput(e) { setNuma(e.target.value); } function handleClick() { console.log('Button clicked'); console.log(`Final state: ${numa}`); // fetch(url) using numa state } return ( <div> <input value={numa} onChange={handleInput} /> <button onClick={handleClick}>Click me</button> </div> ); }; // Render it ReactDOM.render( <Example />, document.getElementById("react") );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script> <div id="react"></div>

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