Привет ребята,

Это мой первый блог в области разработки программного обеспечения. Сегодня я расскажу, как мы можем создать форму в react js.

Давай Гуооо.....

React использует формы, позволяющие пользователям взаимодействовать с веб-страницей, как и в HTML.

function MyForm() {
  return (
    <form>
      <label>Enter your name:
        <input type="text" />
      </label>
    </form>
  )
}
ReactDOM.render(<MyForm />, document.getElementById('root'));

Приведенный выше пример будет работать как обычно, форма будет отправлена, и страница обновится. Но это не то, чего мы хотим в React. Итак, мы хотим предотвратить это поведение по умолчанию и позволить React управлять формой.

Теперь вы будете думать о том, как будет выглядеть обработка формы в React. Обработка форм — это то, как вы обрабатываете данные, когда они изменяют значение или отправляются. Обычно в HTML данные формы обычно обрабатываются DOM. Но в React данные формы обычно обрабатываются компонентами. То есть, когда данные обрабатываются компонентами, все данные сохраняются в состоянии компонента. Изменения можно контролировать, добавляя обработчики событий в атрибут onChange.

Мы можем использовать хук useState, чтобы отслеживать каждое входное значение и предоставлять «единый источник правды» для всего приложения.

Вот минимальный пример кода:

import { useState } from "react";
import ReactDOM from 'react-dom';

function MyForm() {
  const [name, setName] = useState("");

  return (
    <form>
      <label>Enter your name:
        <input
          type="text" 
          value={name}
          onChange={(e) => setName(e.target.value)}
        />
      </label>
    </form>
  )
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Теперь вы можете подумать, как вы можете обрабатывать отправляющую часть формы. Вы можете сделать это, добавив обработчик событий в атрибут onSubmit для <form>.

import { useState } from "react";
import ReactDOM from 'react-dom';

function MyForm() {
  const [name, setName] = useState("");

  const handleSubmit = (event) => {
    event.preventDefault();
    alert(`The name you entered was: ${name}`)
  }

  return (
    <form onSubmit={handleSubmit}>
      <label>Enter your name:
        <input 
          type="text" 
          value={name}
          onChange={(e) => setName(e.target.value)}
        />
      </label>
      <input type="submit" />
    </form>
  )
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Теперь давайте обсудим, как вы можете создать несколько полей ввода в форме.

Это можно сделать, контролируя значения более чем одного поля ввода, добавляя атрибут name к каждому элементу.

Теперь для доступа к полям в обработчике событий используйте синтаксис event.target.name и event.target.value. А чтобы также обновить состояние, используйте квадратные скобки вокруг имени свойства.

import { useState } from "react";
import ReactDOM from "react-dom";

function MyForm() {
  const [inputs, setInputs] = useState({});

  const handleChange = (event) => {
    const name = event.target.name;
    const value = event.target.value;
    setInputs(values => ({...values, [name]: value}))
  }

  const handleSubmit = (event) => {
    event.preventDefault();
    alert(inputs);
  }

  return (
    <form onSubmit={handleSubmit}>
      <label>Enter your name:
      <input 
        type="text" 
        name="username" 
        value={inputs.username || ""} 
        onChange={handleChange}
      />
      </label>
      <label>Enter your age:
        <input 
          type="number" 
          name="age" 
          value={inputs.age || ""} 
          onChange={handleChange}
        />
        </label>
        <input type="submit" />
    </form>
  )
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Наконец, давайте обсудим, как мы можем создать поле выбора и раскрывающийся список в React.

Выпадающий список или поле выбора в React также немного отличается от HTML. В HTML выбранное значение в раскрывающемся списке определялось выбранным атрибутом.

<select>
  <option value="Ford">Ford</option>
  <option value="Volvo" selected>Volvo</option>
  <option value="Fiat">Fiat</option>
</select>

Но в React выбранное значение определяется атрибутом value в теге select.

Вот пример кода:

import { useState } from "react";
import ReactDOM from "react-dom";
function MyForm() {
  const [myCar, setMyCar] = useState("Volvo");
  const handleChange = (event) => {
    setMyCar(event.target.value)
  }
  return (
    <form>
      <select value={myCar} onChange={handleChange}>
        <option value="Ford">Ford</option>
        <option value="Volvo">Volvo</option>
        <option value="Fiat">Fiat</option>
      </select>
    </form>
  )
}
ReactDOM.render(<MyForm />, document.getElementById('root'));

Спасибо за чтение, я чертовски уверен, что теперь вы можете получить некоторые знания из этой статьи.

До скорой встречи с новой статьей.

‹h1›Удачного кодирования! ‹/h1›