Top.Mail.Ru
Ответы

Применение стилей в React,Custom hooks, API

Создайте на странице форму регистрации с применением различных css стилей, можно использовать любой удобный для вас вариант


Создать свой пользовательский хук, в котором объединены два хука useEffect и useState


Написать отправку данных на сервер при помощи fetch

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
 import React, { useState, useEffect } from 'react'; 
 
// Компонент формы регистрации 
const RegistrationForm = () => { 
  const [name, setName] = useState(''); 
  const [email, setEmail] = useState(''); 
  const [password, setPassword] = useState(''); 
 
  const handleNameChange = (e) => { 
    setName(e.target.value); 
  }; 
 
  const handleEmailChange = (e) => { 
    setEmail(e.target.value); 
  }; 
 
  const handlePasswordChange = (e) => { 
    setPassword(e.target.value); 
  }; 
 
  const handleSubmit = (e) => { 
    e.preventDefault(); 
    // Отправка данных на сервер при помощи fetch 
    fetch('https://api.example.com/register', { 
      method: 'POST', 
      body: JSON.stringify({ name, email, password }), 
      headers: { 
        'Content-Type': 'application/json' 
      } 
    }) 
      .then((response) => response.json()) 
      .then((data) => { 
        // Обработка ответа от сервера 
        console.log(data); 
      }) 
      .catch((error) => { 
        // Обработка ошибок 
        console.error(error); 
      }); 
  }; 
 
  return ( 
    <form onSubmit={handleSubmit}> 
      <div> 
        <label htmlFor="name">Name:</label> 
        <input type="text" id="name" value={name} onChange={handleNameChange} /> 
      </div> 
      <div> 
        <label htmlFor="email">Email:</label> 
        <input type="email" id="email" value={email} onChange={handleEmailChange} /> 
      </div> 
      <div> 
        <label htmlFor="password">Password:</label> 
        <input type="password" id="password" value={password} onChange={handlePasswordChange} /> 
      </div> 
      <button type="submit">Register</button> 
    </form> 
  ); 
}; 
 
// Пользовательский хук, объединяющий useEffect и useState 
const useEffectWithState = (initialValue) => { 
  const [state, setState] = useState(initialValue); 
 
  useEffect(() => { 
    // Логика, выполняемая при изменении состояния 
    console.log('State updated:', state); 
  }, [state]); 
 
  return [state, setState]; 
}; 
 
// Компонент, использующий пользовательский хук 
const ExampleComponent = () => { 
  const [count, setCount] = useEffectWithState(0); 
 
  const handleIncrement = () => { 
    setCount(count + 1); 
  }; 
 
  return ( 
    <div> 
      <p>Count: {count}</p> 
      <button onClick={handleIncrement}>Increment</button> 
    </div> 
  ); 
}; 
 
// Компонент-контейнер, объединяющий форму регистрации и пример пользовательского хука 
const App = () => { 
  return ( 
    <div> 
      <h2>Registration Form</h2> 
      <RegistrationForm /> 
      <h2>Custom Hook Example</h2> 
      <ExampleComponent /> 
    </div> 
  ); 
}; 
 
export default App;