en
Feedback
React

React

Open in Telegram

ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ React js ΠΈ всС Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ связано. По всСм вопросам @evgenycarter

Show more
2 674
Subscribers
-224 hours
-57 days
-1230 days
Posts Archive
React
2 674
ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡΡ Π² React Suspense API https://blog.bitsrc.io/understanding-the-suspense-api-in-react-18-bbea3f6f6df1 ✍️ @React_lib
ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡΡ Π² React Suspense API https://blog.bitsrc.io/understanding-the-suspense-api-in-react-18-bbea3f6f6df1 ✍️ @React_lib

React
2 674
ПишСм ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ с использованиСм React, Nest ΠΈ NX. Π§Π°ΡΡ‚ΡŒ 1: настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π’ сСрии статСй ΠΌΡ‹ поэтапно Ρ€Π°Π·Ρ€Π°Π±
ПишСм ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ с использованиСм React, Nest ΠΈ NX. Π§Π°ΡΡ‚ΡŒ 1: настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π’ сСрии статСй ΠΌΡ‹ поэтапно Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° создадим ΠΈ настроим ΠΌΠΎΠ½ΠΎΡ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NX, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ backend Π½Π° основС NestJS, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… MongoDB. ✍️ @React_lib

React
2 674
UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для React: Ρ‚ΠΎΠΏ-10 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² https://dev.to/nilanth/10-react-packages-with-1k-ui-components-2bf3 ✍
UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для React: Ρ‚ΠΎΠΏ-10 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² https://dev.to/nilanth/10-react-packages-with-1k-ui-components-2bf3 ✍️ @React_lib

React
2 674
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования useDeferredValue Дэн Абрамов подСлился ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования Ρ…ΡƒΠΊΠ° useDeferredValue ΠΈΠ· React 18: function Form() { const [state, setState] = useState({ value: "hello" }) const deferredState = useDeferredValue(state) // ... Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ deferredState Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Ρ€Π΅Π½Π΄Π΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ срочный: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вычислСниС слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ debounce. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ state Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π² элСмСнтах ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, input. ✍️ @React_lib

React
2 674
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Π² React - Formik. Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. Π£ΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ асинхронно, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ TypeScript, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Yup ΠΈΠ»ΠΈ Joi. Π’ Formik Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для создания Ρ„ΠΎΡ€ΠΌΡ‹: Form, Field, ErrorMessage, Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…ΡƒΠΊ useFormik.  - React Hook Form. Гибкая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания Ρ„ΠΎΡ€ΠΌ Ρ‡Π΅Ρ€Π΅Ρ… Ρ…ΡƒΠΊΠΈ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ TypeScript ΠΈ React Native. Π£ΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ½ΠΏΡƒΡ‚Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· ref Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. Если ΠΈΠ½ΠΏΡƒΡ‚ кастомный, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Material UI, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Controller.  - React Final Form. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Observer для обновлСния состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅-Ρ€Π΅Π½Π΄Π΅Ρ€Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, Π² состав Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ входят ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Form, Field, Ρ‚Π°ΠΊ ΠΈ Ρ…ΡƒΠΊΠΈ. ΠœΠ΅ΠΉΠ½Ρ‚Π΅Π½Π΅Ρ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Erik Rasmussen, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Redux Form, считаСт ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„ΠΈΡ‡Π΅ΠΉ React Final Form Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ✍️ @React_lib

React
2 674
React Hooks: useState Π₯ΡƒΠΊ useState() ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для управлСния состояниСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ°Ρ€Ρƒ Π³Π΅Ρ‚Ρ‚Π΅Ρ€/сСттСр - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для обновлСния этого значСния. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ сигнатуру: const [value, setValue] = useState(defaultValue). ОбновлСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ состояния const UpdateState = () => { const [age, setAge] = useState(19) const handleClick = () => setAge(age + 1) return ( <> <p>МнС {age} Π»Π΅Ρ‚.</p> <button onClick={handleClick}>Π‘Ρ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡˆΠ΅!</button> </> ) } ОбновлСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… состояний const MultipleStates = () => { const [age, setAge] = useState(19) const [num, setNum] = useState(1) const handleAge = () => setAge(age + 1) const handleNum = () => setNum(num + 1) return ( <> <p>МнС {age} Π»Π΅Ρ‚.</p> <p>Π£ мСня {num} Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр.</p> <button onClick={handleAge}>Π‘Ρ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡˆΠ΅!</button> <button onClick={handleNum}>Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр!</button> </> ) } ОбновлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° состояния const StateObject = () => { const [state, setState] = useState({ age: 19, num: 1 }) const handleClick = (val) => setState({ ...state, [val]: state[val] + 1 }) const { age, num } = state return ( <> <p>МнС {age} Π»Π΅Ρ‚.</p> <p>Π£ мСня {num} Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр.</p> <button onClick={() => handleClick('age')}>Π‘Ρ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡˆΠ΅!</button> <button onClick={() => handleClick('num')}> Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр! </button> </> ) } Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ const CounterState = () => { const [count, setCount] = useState(0) return ( <> <p>Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика: {count}.</p> <button onClick={() => setCount(0)}>Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ</button> <button onClick={() => setCount((prevVal) => prevVal + 1)}> Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ (+) </button> <button onClick={() => setCount((prevVal) => prevVal - 1)}> Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ (-) </button> </> ) } Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ const Profile = () => { const [profile, setProfile] = useState({ firstName: 'Иван', lastName: 'ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²' }) const handleChange = ({ target: { value, name } }) => { setProfile({ ...profile, [name]: value }) } const { firstName, lastName } = profile return ( <> <h1>ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ</h1> <form> <input type='text' value={firstName} onChange={handleChange} name='firstName' /> <br /> <input type='text' value={lastName} onChange={handleChange} name='lastName' /> </form> <p> Имя: {firstName} <br /> Ѐамилия: {lastName} </p> </> ) } ✍️ @React_lib

React
2 674
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ρ‚ΠΎ для поиска ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ρ‚ΠΎ для поиска ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты: - React DevTools Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ инструмСнт ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ React прилоТСния. Π£ΠΌΠ΅Π΅Ρ‚ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ perfomance ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ прилоТСния, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ отрСндСрился ΠΈ сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° это ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ. - Why Did You Render (WDYR) Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ³ΠΎ React DevTools ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ, поэтому Π² процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ WDYR. Π­Ρ‚ΠΎΡ‚ инструмСнт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€Π΅Π½Π΄Π΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ пропса ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, поэтому этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ рСндСрится ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ создаСтся. ΠΠ°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ WDYR отправляСт Π² Π»ΠΎΠ³ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. - React Render Tracker Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для отслСТивания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния ✍️ @React_lib

React
2 674
Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ startTransition Ricky Hanlon ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ API startTransition ΠΈΠ· React 18, с объяснСниСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ API ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² perfomance ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅.    Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ слайдСр ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с «тяТСлыми вычислСниями», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Ρ€Π΅Π½Π΄Π΅Ρ€Π°, особСнно Π½Π° слабых устройствах. ПослС измСнСния значСния слайдСра происходил Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€ тяТСлого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π‘Π°ΠΌΡ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€Π° тяТСлого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² React 17 Ρ‡Π΅Ρ€Π΅Π· debounce, Ρ‚.Π΅. откладывая Ρ€Π΅Π½Π΄Π΅Ρ€ Π½Π° измСнСния слайдСра.  Π’ React 18 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния слайдСра достаточно ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² startTransition, ΠΈ React ΡƒΠΆΠ΅ сам Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ эффСктивный Ρ€Π΅Π½Π΄Π΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ПослС Ρ€Π΅Π½Π΄Π΅Ρ€Π° измСнСния значСния слайдСра, React Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ transition Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³, React Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ: - Yielding: ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 5 мс React ставит Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π΅Π½Π΄Π΅Ρ€Π° Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ промисы.  - ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅: React ставит Ρ€Π΅Π½Π΄Π΅Ρ€ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ слайдСра ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. - ΠžΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΠ΅ старых Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²: ΠΊΠΎΠ³Π΄Π° React Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ послС прСрывания, Ρ‚ΠΎ ΠΎΠ½ отбрасываСт старый ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ. https://github.com/reactwg/react-18/discussions/65 ✍️ @React_lib

React
2 674
CSS-анимация ΠΊΠ°ΠΊ DOM-based Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ https://medium.com/bbc-design-engineering/css-animations-as-a-dom-based-ani
CSS-анимация ΠΊΠ°ΠΊ DOM-based Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ https://medium.com/bbc-design-engineering/css-animations-as-a-dom-based-animations-framework-d6ef582c033a ✍️ @React_lib

React
2 674
Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΡƒΠΊ useInsertionEffect Π² React 18 CSS-in-JS Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ стили Π½Π° Π»Π΅Ρ‚Ρƒ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΡ… Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Для этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅Π³ΠΈ <style> Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Ρ‚.ΠΊ. это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ CSS ΠΏΡ€Π°Π²ΠΈΠ» Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ пСрСсчитываСт стили Ρƒ всСх элСмСнтов. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ лишнСго пСрСсчСта стилСй для элСмСнтов Π½Π° страницС ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ CSS ΠΏΡ€Π°Π²ΠΈΠ», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ DOM, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° React ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ DOM, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ clientWidth) ΠΈ Π΄ΠΎ отрисовки Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊ useInsertionEffect. По сигнатурС ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° useEffect, Π½ΠΎ ΠΎΠ½ запускаСтся синхронно ΠΏΠ΅Ρ€Π΅Π΄ измСнСниями DOM. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ…ΡƒΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ DOM элСмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ <style> ΠΈΠ»ΠΈ <defs>. Он запускаСтся ΠΏΠ΅Ρ€Π΅Π΄ Ρ…ΡƒΠΊΠΎΠΌ useLayoutEffect. ОсновноС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ…ΡƒΠΊΠ° – ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ стилСй Π² CSS Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. function useCSS(rule) { useInsertionEffect(() => { if (!isInserted.has(rule)) { isInserted.add(rule); document.head.appendChild(getStyleForRule(rule)); } }); return rule; } function App() { let className = useCSS(rule); return <div className={className} />; } https://blog.saeloun.com/2022/06/02/react-18-useinsertioneffect ✍️ @React_lib

React
2 674
Бамая мощная ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ React JS https://dev.to/bricourse/the-most-powerful-react-js-cheat-sheet-4ipd
Бамая мощная ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ React JS https://dev.to/bricourse/the-most-powerful-react-js-cheat-sheet-4ipd

React
2 674
300+ вопросов для собСсСдования ΠΏΠΎ React https://dev.to/sakhnyuk/300-react-interview-questions-2ko4

React
2 674
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π½Π° React с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Error Boundary https://dev.to/ms_yogii/handle-errors-gracefully-with-react-error-boundary
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π½Π° React с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Error Boundary https://dev.to/ms_yogii/handle-errors-gracefully-with-react-error-boundary-25mb

React
2 674
Как ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΌΠΈΠ΄Π»Π²Π°Ρ€ подписки для Redux Toolkit Π’ Redux Toolkit 1.8 Π²Ρ‹ΡˆΠ»ΠΎ Π½ΠΎΠ²ΠΎΠ΅ API createListenerMiddleware для подписки Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ экшСнов ΠΈΠ»ΠΈ измСнСния стСйта. Π­Ρ‚ΠΎ API Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ простой Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ использования вмСсто Π±ΠΎΠ»Π΅Π΅ популярных saga ΠΈΠ»ΠΈ observable. // Create the middleware instance and methods const listenerMiddleware = createListenerMiddleware() // Add one or more listener entries that look for specific actions. // They may contain any sync or async logic, similar to thunks. listenerMiddleware.startListening({ actionCreator: todoAdded, effect: async (action, listenerApi) => { // Run whatever additional side-effect-y logic you want here console.log('Todo added: ', action.payload.text) // Can cancel other running instances listenerApi.cancelActiveListeners() // Run async logic const data = await fetchData() // Pause until action dispatched or state changed if (await listenerApi.condition(matchSomeAction)) { // Use the listener API methods to dispatch, get state, // unsubscribe the listener, start child tasks, and more listenerApi.dispatch(todoAdded('Buy pet food')) listenerApi.unsubscribe() } }, }) Π’ своСм Π±Π»ΠΎΠ³Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Redux Toolkit, ΠœΠ°Ρ€ΠΊ Эриксон, рассказал ΠΎΠ± истории Π΄Π°Π½Π½ΠΎΠ³ΠΎ API ΠΈ этапах Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ Π±Ρ‹Π»Π° Π½Π°Ρ‡Π°Ρ‚Π° 2.5 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ общСдоступный API ΠΈ ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ основС Ρƒ Redux Π΅ΡΡ‚ΡŒ нСсколько основных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сайд эффСктами: - Thunks: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ экшСн, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ (dispatch, getState) Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. - Sagas: Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, которая Π½Π° экшСн Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сайд эффСкт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. - Observables: Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ RxJs ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° экшСн Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сайд эффСкт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Redux Toolkit Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Thunks, ΠΊΠ°ΠΊ самый простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сайд эффСктами. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ API createListenerMiddleware ΠΊΠΎΠΌΠ°Π½Π΄Π° Redux Toolkit Ρ…ΠΎΡ‚Π΅Π»Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠΊΡˆΠ΅Π½Ρ‹ ΠΈ сайд эффСкты, Ρ‚.Π΅. смотрСла Π² сторону redux-saga. Однако ΠΏΠΎ слоТности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ API Π±Ρ‹Π»Π° Ρ†Π΅Π»ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΊ redux-thunk. https://blog.isquaredsoftware.com/2022/03/designing-rtk-listener-middleware/

React
2 674
Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, связанныС с React Hooks https://dev.to/said_mounaim/awesome-things-related-to-react-hooks-30c4
Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, связанныС с React Hooks https://dev.to/said_mounaim/awesome-things-related-to-react-hooks-30c4

React
2 674
Как React 18 ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π£ΠΆΠ΅ сСйчас ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ React Π΄ΠΎ 18 вСрсии, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΌ. Однако, ΠΈΠ½ΠΎΠ³Π΄Π° послС обновлСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ошибки Π² прилоТСниях. Бвязано это с Π½ΠΎΠ²Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ StrictMode. Π’ dev Ρ€Π΅ΠΆΠΈΠΌΠ΅ React Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, автоматичСски Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ монтируСтся Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, восстанавливая ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС стСйтов ΠΏΡ€ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ React ΠΌΠΎΠ³ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ сСкции UI с сохранСниСм стСйта. НапримСр, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ‚Π°Π±ΠΎΠ² Π½Π° страницС. Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ эффСкты Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅: * React mounts the component. * Layout effects are created. * Effect effects are created. * React simulates effects being destroyed on a mounted component. * Layout effects are destroyed. * Effects are destroyed. * React simulates effects being re-created on a mounted component. * Layout effects are created * Effect setup code runs Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эффСкты Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π±Ρ‹Π»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹, Ρ‚.Π΅., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданный рСсурс Π² эффСктС удалялся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ очистки. Π‘ появлСниСм ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ useEffect ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π±Π°Π³ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. function useIsMounted() { const isMountedRef = React.useRef(true); React.useEffect(() => { return () => { isMountedRef.current = false; }; }, []); return () => isMountedRef.current; } НапримСр, Ρ…ΡƒΠΊ Π²Ρ‹ΡˆΠ΅ опрСдСляСт, смонтирован Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π’ React 18 Π΄Π°Π½Π½Ρ‹ΠΉ Ρ…ΡƒΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚.ΠΊ. ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ эффСктов React Π±ΡƒΠ΄Π΅Ρ‚ нСсколько Ρ€Π°Π· Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ useEffect. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ…ΡƒΠΊ, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ присвоСниС Π² самом эффСктС: React.useEffect(() => { isMountedRef.current = true; return () => { isMountedRef.current = false; }; }, []);

React
2 674
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°: большоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ SSR-Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π΅ Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°: большоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ SSR-Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π΅ Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сСрвСрного Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, Π½ΠΎ какая Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π½Π° Ρƒ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ? Какой инструмСнт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ β€” Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ собствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅? КакиС ограничСния Π² дальнСйшСм ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°? https://habr.com/ru/company/superjob/blog/660681/

React
2 674
Fiber ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ: ОбновлСния состояния ΠΈ пропсов Π² React Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ базовая ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ для дСмонстрации Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… процСссов Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Fiber, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ опираСтся React для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ пропсов Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. https://indepth.dev/posts/1009/in-depth-explanation-of-state-and-props-update-in-react

React
2 674
Анимации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Анимация ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ – прСкрасный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌ. Π­Ρ‚ΠΎ ΠΌΠ΅Π»ΠΎΡ‡ΡŒ, Π½
Анимации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Анимация ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ – прСкрасный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌ. Π­Ρ‚ΠΎ ΠΌΠ΅Π»ΠΎΡ‡ΡŒ, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ классным. ДСлимся ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ, Π³Π΄Π΅ Π°Π²Ρ‚ΠΎΡ€ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ React. πŸ‘‰Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ