React JS
React ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ @haarrp - admin @itchannels_telegram - π₯Π»ΡΡΡΠΈΠ΅ ΠΈΡ-ΠΊΠ°Π½Π°Π»Ρ @javascriptv - ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ javascript @programming_books_it - Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ it ΠΊΠ½ΠΈΠ³ΠΈ @ai_machinelearning_big_data - ml β 5037566384
Show moreπ Analytical overview of Telegram channel React JS
Channel React JS (@react_tg) in the Russian language segment is an active participant. Currently, the community unites 16 402 subscribers, ranking 7 690 in the Technologies & Applications category and 40 001 in the Russia region.
π Audience metrics and dynamics
Since its creation on Π½Π΅Π²ΡΠ΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 16 402 subscribers.
According to the latest data from 30 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -122 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 10.47%. Within the first 24 hours after publication, content typically collects 5.71% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 718 views. Within the first day, a publication typically gains 937 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
- Thematic interests: Content is focused on key topics such as javascript, github, css, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π±ΡΠ°ΡΠ·Π΅Ρ.
π Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
βReact ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
@haarrp - admin
@itchannels_telegram - π₯Π»ΡΡΡΠΈΠ΅ ΠΈΡ-ΠΊΠ°Π½Π°Π»Ρ
@javascriptv - ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ javascript
@programming_books_it - Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ it ΠΊΠ½ΠΈΠ³ΠΈ
@ai_machinelearning_big_data - ml
β 5037566384β
Thanks to the high frequency of updates (latest data received on 31 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
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{/* Comment */}, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π΅Π½.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ JSX ΠΈ Π΅ΡΡ 2 Π΄ΡΡΠ³ΠΈΡ
ΡΠΏΠΎΡΠΎΠ±Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΡΡΠ΅:
https://dmitripavlutin.com/react-comments/
#react #ΡΡΠΎΠ½ΡΠ΅Π½Π΄@nightwatch/api-testing;
β ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Nightwatch ΠΈ Testing Library.
https://habr.com/ru/companies/otus/articles/719266/
#react #qa