React JS
17.6K subscribers
551 photos
59 videos
5 files
627 links
React программирование

@haarrp - admin

@itchannels_telegram - 🔥лучшие ит-каналы

@javascriptv - продвинутый javascript

@programming_books_it - бесплатные it книги

@ai_machinelearning_big_data - ml

№ 5037566384
Download Telegram
How to Refactor Large React Components (The Story of a 2700-Line Component)

https://code.pieces.app/blog/how-to-refactor-large-react-components

@react_tg
👍71🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Scroll direction rotation — красивая галерея с эффектом наклона при скроллинге. Галерея написана с помощью SCSS и JavaScript.

https://codepen.io/choogoor/pen/bGjrWVL

@react_tg
7👍1
Поэтапный перевод учебника Patterns.dev, в котором представлен современный взгляд на шаблоны проектирования, рендеринга и производительности JavaScript.

🗄 Часть 1
🗄 Часть 2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥51😱1
React Quickly, Second Edition Version 5

📚 Книга

@react_tg
10👍5🔥3🤩1
Тестируйте свои React-компоненты с помощью Nightwatch и Testing Library

Nightwatch и Testing Library — два крайне полезных инструмента для тестирования компонентов. Первая библиотека написана на Node.js и позволяет проводить полноценное сквозное тестирование веб-приложений и сайтов, написанных на JS. В свою очередь Testing Library более минималистичный инструмент, созданный специально для тестирования React-компонентов.

В этой статье вы научитесь:

— устанавливать новый проект React с помощью Vite, который также используется внутри Nightwatch для компонентного тестирования;
— подключать и конфигурировать Nightwatch и Testing Library;
— имитировать API запросы с помощью плагина @nightwatch/api-testing;
— писать комплексные React-компонентные тесты, используя Nightwatch и Testing Library.

https://habr.com/ru/companies/otus/articles/719266/

#react #qa
👍93🔥2
👍71🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Gallery animation — анимированная галерея с эффектом при прокрутке. Реализована с помощью CSS и JavaScript.

https://codepen.io/Tiopayo/pen/GRYoMEZ

@javascriptv
👍103🔥2
Подборка ресурсов с полезными шпаргалками для фронтенд-разработчика:

htmlcheatsheet
cssreference
reactcheatsheet
cheatography
javascriptcheatsheet

Сохраняем себе, чтобы не потерять

@react_tg
👍163🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Mountain Hero Page — красивая страница с анимированным скроллом. Страница реализована с помощью CSS и JavaScript.

https://codepen.io/aryancodeworm/pen/rNKqgpY

@react_tg
👍175🔥3
Обрабатываем ошибки в React: полное руководство

Рассмотрим обработку ошибок в React: что делать при их появлении, как их выявить и устранить.

Читать

@react_tg
👍112🔥2
Погружение в фундаментальные основы реактивного программирования: разберемся в том, что React.js всё же является реактивным, и рассмотрим кейсы, при которых целесообразно применять паттерны реактивного программирования.

Читать
🔥12👍21
Как писать комментарии в React: хорошие, плохие и уродливые

Когда дело доходит до написания комментариев, React предлагает синтаксис {/* Comment */}, который может быть немного многословен.

В этой статье вы можете посмотреть, как использовать обычные комментарии JSX и ещё 2 других способа комментирования, которые могут быть лучше:

https://dmitripavlutin.com/react-comments/

#react #фронтенд
7👍2🔥2
5 ошибок, которые можно допустить при запуске первого проекта React

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

В этой статье автор поделился ошибками, которые допустил он и можете допустить вы, начиная свой первый проект:

https://css-tricks.com/5-mistakes-starting-react/

@react_tg
👍113🔥1
Поздравляем юбиляра библиотеке React исполнилось 10 лет.

React - это проект, который принес многое а в веб-индустрию и ещё больше впереди. Давайте поддержим React реакциями!

@react_tg
93👍23🔥6👏4🏆2
Как избежать повторного рендеринга компонентов React

https://blog.openreplay.com/how-to-stop-react-components-from-rerendering/

@react_tg
👍8🔥6🤨32
7 методов оптимизации производительности React

1. Использование React.iss.onemo (HOC, а не хук)

import React, { memo } from 'react'

interface Props {
title: string
subtitle: string
}

const MyComponent: React.FC<Props> = memo(({ title, subtitle }) => {
return (
<div>
<h1>{title}</h1>
<h2>{subtitle}</h2>
</div>
)
})


2. Оптимизация обработчиков событий с помощью useCallback

import React, { useState, useCallback } from 'react'

const Counter: React.FC = () => {
const [count, setCount] = useState(0) const increment = useCallback(() => {
setCount(prevCount => prevCount + 1)
}, [])

return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
)
}


3. Виртуализация длинных списков с помощью react-window

import React from 'react'
import { FixedSizeList as List } from 'react-window'

const Row: React.FC<{ index: number; style: React.CSSProperties }> = ({
index,
style,
}) => {
return (
<div style={style}>
<p>{`Row ${index}`}</p>
</div>
)
}

const VirtualizedList: React.FC = () => {
const itemCount = 1000
return (
<List height={500} itemCount={itemCount} itemSize={50} width={300}>
{Row}
</List>
)
}

4. Ленивая загрузка компонентов с помощью React.lazy и Suspense

import React, { lazy, Suspense } from 'react'
const LazyLoadedComponent = lazy(() => import('./LazyLoadedComponent'))

const App: React.FC = () => {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<LazyLoadedComponent />
</Suspense>
</div>
)
}


5. Использование API React.Profiler для выявления узких мест производительности

import React, { Profiler } from 'react'

const onRender = (
id: string,
phase: 'mount' | 'update',
actualDuration: number,
baseDuration: number,
startTime: number,
commitTime: number,
interactions: Set<{ id: number; name: string; timestamp: number }>
) => {
console.log('Profiler:', {
id,
phase,
actualDuration,
baseDuration,
startTime,
commitTime,
interactions,
})
}

const App: React.FC = () => {
return (
<Profiler id="MyComponent" onRender={onRender}>
<MyComponent />
</Profiler>
)
}


6. Оптимизация обновления состояний с помощью Immer

import React, { useState } from 'react'
import produce from 'immer'

interface User {
id: number
name: string
}

const App: React.FC = () => {
const [users, setUsers] = useState<User[]>([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
])

const updateUser = (id: number, newName: string) => {
setUsers(
produce((draftUsers: User[]) => {
const user = draftUsers.find(user => user.id === id)
if (user) {
user.name = newName
}
})
)
}

return (
// ...
)
}


7. Использование троттлинга и дебаунсинга для обработчиков ввода

import React, { useState, useCallback } from 'react'
import { debounce } from 'lodash-es'

const SearchBox: React.FC = () => {
const [searchTerm, setSearchTerm] = useState('')

const handleSearch = useCallback(
debounce((value: string) => {
setSearchTerm(value)
}, 300),
[]
)

const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
handleSearch(event.target.value)
}

return (
<div>
<input type="text" onChange={handleChange} />
</div>
)
}


@react_tg
👍2110🔥4
🔥Waku

Waku - это минималистичный React-фреймворк с поддержкой React Server Components.

Github

@react_tg
👍42🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Parallax Article Card — форма с эффектом параллакса при наведении. Реализована с помощью SCSS и JavaScript.

https://codepen.io/mprquinn/pen/zdKqGE

@react_tg
👍15