React от А до Я
27 subscribers
28 photos
7 videos
4 files
8 links
🚀Изучаем React.js

Показываю на пальцах, что frontend - это просто.

Обсуждения и помощь: https://t.me/+Hu5Tyef-VtU5ZjNi

👤Владелец канала: @craster_69
Download Telegram
Инструменты React для SPA

👇 Link отличается от тега "a" тем, что позволяет переключать роуты без обновления страниц.

import { Link } from 'react-router-dom';

const MyComponent = () => {

return (

<div>

<Link to="/some-page">Перейти на страницу</Link>

</div>
);
};

👇 useNavigate такой же как и Link, но для кнопок.

import { useNavigate } from 'react-router-dom';

const MyComponent = () => {
const navigate = useNavigate();

const handleClick = () => {
// Программная навигация с использованием useNavigate
navigate('/another-page');
};

return (
<div>
{/* Обработчик клика, использующий программную навигацию */}
<button onClick={handleClick}>Перейти на другую страницу</button>
</div>
);
};


Давайте уже добьём оставшиеся 3❤️ в закреплённом посте, буду делать контент вам в ленту🔥
5🍓1
Процесс запущен🔥
🔥5
Выбираем имя мессенджера.

Свои варианты предлагайте в комментариях 👇
Anonymous Poll
40%
TypeMe
30%
LumosChat
30%
AiChat
0%
DevChat
3
Сегодня-завтра поищу дизайн для проекта
5
Будем пробовать что-нибудь из этого.

❤️ - 1
🔥 - 2
👍 - 3
🏆 - 4
⚡️ - 5
👍32🏆2
Media is too big
VIEW IN TELEGRAM
Routing в React: Часть 2

Всех с наступающим❤️

Данный видео-урок также опубликован в Дзен👇.
6
Зацените обновочку🔥
🔥53🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Друзья! Хочу поздравить всех вас с наступающим новым годом! Желаю счастья, любви, достатка, ну конечно же и деньжат побольше)) В новом году вас ждёт очень годный контент, помимо мессенджера планируются более крупные и масштабные проекты, без вашей поддержки которые мне не реализовать. Всех очень сильно люблю, с праздником родные❤️
7👍3👏2🍓2
Media is too big
VIEW IN TELEGRAM
Самые внимательные в конце могли заметить, что после заполнения формы placeholder возвращается обратно. Это неудобно и некрасиво. Даю вам время подумать.

Это одна из недавних тем, которую мы проходили.


Сегодня выложу решение проблемы🔥
🔥62🥰1
Media is too big
VIEW IN TELEGRAM
Подписчик справился с данной проблемой, не использовав React!

Тестовый метод: input:not(:placeholder-shown) позволяет проверять наличие символов в input прямо в CSS.


❤️ - выкладываю исходник проекта.
7🔥3👏3
Приступаю готовить контент для YouTube🔥 Ждёте?)
🔥7👏3🤔3
Работаем с формами

Выше я показал простейшую форму авторизации на сайте. Как же получить данные, которые находятся в ней?

Есть 2 способа решения данной задачи. Сегодня разберём один из них.


👉 useState. Вы не ослышались, это состояния. В первом уроке я рассказывал, что это локальное хранилище с временными данными. Кому непонятна данная тема вот ссылка на пост: https://t.me/reactim/113.

Реализация:
import { useEffect, useState } from 'react'
import styles from './Form.module.css'

export const Form = () => {


const [form, SetForm] = useState({ email: '', password: '' })

const change = (el, value) => {
el.preventDefault()

value === 'email' ? SetForm({ ...form, email: el.target.value }) : SetForm({ ...form, password: el.target.value })
}

useEffect(() => {

console.log(form)

}, [change])

return (

<div className={styles.wrap}>

<span className={styles.title}>Авторизация</span>

<form className={styles.form}>

<div className={styles.email}>
<input placeholder=''
onChange={el => change(el, 'email')}
value={form['email']}
/>
<span>Email</span>
</div>


<div className={styles.password}>
<input placeholder=''
onChange={el => change(el, 'password')}
value={form['password']}
/>
<span>Password</span>
</div>

<button className={styles.submit} type='submit'>Вход</button>
</form>
</div>

)
}
6🥰3👏3
В следующих уроках покажу второй способ, который уменьшит и упростит наш код!
👍6🥰3😁21
Почему useForm лучше useState?

Сегодня выпущу гайд по работе с react-hook-form.


Возможности. useForm обладает огромным доп. функционалом, которого нет у useState.

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

Комфорт. Хук позволяет производить настройку "под себя". Например: в useState отслеживать изменения input мы можем указав "onChange" в каждом теге. В useForm этого делать не нужно. Данный параметр можно указать один раз прямо в настройках хука, и всё будет работать также!

❤️ за старания :)
6🔥2😱2🥰1
Самый быстрый гайд по react-hook-form.

1️⃣ Установка. В терминале пишем: yarn add react-hook-form.

2️⃣ Импортируем useForm.
import { useForm } from 'react-hook-form'


3️⃣ Настраиваем useForm.

reset - очищает все input.
handleSubmit - получает данные формы.
register - оборачивает каждое значение input в объект.
const { reset, handleSubmit, register } = useForm({ mode: 'onSubmit' })


4️⃣ Оборачиваем input.
import styles from './Form.module.css'
import { useForm } from 'react-hook-form'

export const Form = () => {

const { reset, handleSubmit, register } = useForm({ mode: 'onSubmit' })

const change = data => {
console.log(data)
reset()
}

return (

<div className={styles.wrap}>

<span className={styles.title}>Авторизация</span>

<form className={styles.form} onSubmit={handleSubmit(change)}>

<div className={styles.email}>
<input placeholder=''
{...register("email", { required: true })}
/>
<span>Email</span>
</div>


<div className={styles.password}>
<input placeholder=''
{...register("password", { required: true })}
/>
<span>Password</span>
</div>

<button className={styles.submit} type='submit'>Вход</button>
</form>
</div>

)
}


Код стал гораздо меньше и красивее, не так ли?🔥
🔥6👏3🏆3