При использовании React JS, как определить, какая кнопка использовалась для отправки формы? Я думал, что-то вроде этого будет работать, но это не так.
export default function App() {
const onSubmit = e => {
e.preventDefault();
console.log(e.target.btn.value);
};
return (
<form className="App" onSubmit={onSubmit}>
<button type="submit" name="btn" value="wow">
Button 1
</button>
<button type="submit" name="btn" value="oh no">
Button 2
</button>
</form>
);
}
Код песочница
В соответствии со стандартом HTML вы должны быть в состоянии назвать два кнопки одноименные? Или используйте атрибут formaction
, чтобы различать guish их.
В моем случае кнопки не знают о форме. Я хочу избежать решения, когда я использую какое-то временное состояние, чтобы запомнить, какая кнопка была нажата.
В стандартном HTML вы можете сделать это:
<form action="/action_page.php">
<input type="submit" name="btn" value="Submit">
<input type="submit" name="btn" value="Submit2">
</form>
Когда вы отправляете форму btn
будет опубликовано Submit
или Submit2
в зависимости от того, на какую кнопку вы нажали. Я хочу максимально приблизиться к этому стандарту при создании формы React. Используйте как можно меньше помощи от Javascript и реагируйте насколько это возможно. По сути, просто добавьте кнопки в DOM внутри моей формы и соберите значения из события, к которому у меня есть доступ внутри обработчика отправки.