React - formularz (niekontrolowany komponent)
W tym artykule chcielibyśmy pokazać, jak korzystać z formularzy w React .
Poniższy przykład pokazuje, jak wykonać formularz przy użyciu niekontrolowanego komponentu funkcyjnego.
Dzięki React.useRef()
tworzymy referencje, które będą używane do uzyskania dostępu do elementów wejściowych DOM. Referencje są dołączane za pośrednictwem właściwości ref
. W poniższym przykładzie odniesienia są dołączone do danych wejściowych username
i password
. Gdy wystąpi zdarzenie onSubmit
- usernameRef
i passwordRef
zostaną użyte do utworznia obiektu data
(usernameRef.curent.value
, passwordRef.current.value
).
Obiekt data
może być później przesłany na serwer lub użyty do wykonania innych operacji - w naszym przypadku drukujemy go w konsoli w formie JSON.
Praktyczny przykład:
// ONLINE-RUNNER:browser;
// Uwaga: Odkomentuj poniższe linijki podczas pracy z kompilatorem JSX:
// import React from 'react';
// import ReactDOM from 'react-dom';
const Form = () => {
const usernameRef = React.useRef();
const passwordRef = React.useRef();
const handleSubmit = e => {
e.preventDefault();
const data = {
username: usernameRef.current.value,
password: passwordRef.current.value
};
const json = JSON.stringify(data, null, 4);
console.clear();
console.log(json);
};
return (
<form onSubmit={handleSubmit}>
<div>
<label>Nazwa użytkownika: </label>
<input ref={usernameRef} type="text" />
</div>
<div>
<label>Hasło: </label>
<input ref={passwordRef} type="password" />
</div>
<button type="submit">Zatwierdź</button>
</form>
);
};
const root = document.querySelector('#root');
ReactDOM.render(<Form />, root );
Uwaga:
Powyższe rozwiązanie jest całkiem dobre, ale są lepsze sposoby zarządzania formularzami z dużą ilością pól.