Entiendo que los atributos sin "tipo" se envían dentro de la etiqueta "formulario". ( esta pregunta )
Uno de los componentes de reacción de terceros que uso tiene un botón que no tiene un atributo de tipo, lo que hace que se envíe incondicionalmente.
¿Hay alguna manera de dejar de enviar un formulario si hay un botón de este tipo en un componente de terceros?
Este código es solo un ejemplo:
import React from "react"; import {SamethingComponent} from "samething-package"; export const MyComponent = () => { const handleSubmit = (e) => { // doSomething. } return ( <> <form onSubmit={handleSubmit}> {/* Component containing a button with no type attribute */} <SamethingComponent/> {/* This is needed as a normal submit button. */} <button type="submit">Submit!</button> </form> </> ); };El tipo predeterminado para un <button> es submit . La configuración type='button' debería evitar que se envíe cuando se hace clic y convertirlo en un botón normal.
Use onSubmit del formulario principal.
<form onsubmit='event.preventDefault()'> <button>Click me with impunity</button> </form>HTML:
<form id="form"> <input type="text"/> <button>Submit</button> </form>JS:
const form = document.getElementById("form") form.addEventListener('submit', event => { event.preventDefault() })Puede evitar todos los envíos de formularios en el elemento de formulario llamando a preventDefault en el objeto de evento.