User Image

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

πŸš€ ΠžΠ±Π·ΠΎΡ€ React Native 0.74: Новая АрхитСктура Π±Π΅Π· ΠœΠΎΡΡ‚Π° ΠΈ ИзмСнСния Π² onLayout πŸ› 

By Dwinner ||

Β 10 ΠΌΠΈΠ½ΡƒΡ‚ ||

Β 7 ЀСвраля, 2025

React Native ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ вСрсия 0.74 принСсла нСсколько Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Одним ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ являСтся новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Π΅Π· моста (Bridgeless New Architecture). Π’ этом постС ΠΌΡ‹ рассмотрим, Ρ‡Ρ‚ΠΎ это Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ измСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ onLayout ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°.


πŸ— Новая АрхитСктура Π‘Π΅Π· ΠœΠΎΡΡ‚Π° (Bridgeless New Architecture)

React Native Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ использовал мост (bridge) для связи ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π­Ρ‚ΠΎ создавало Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·-Π·Π° нСобходимости частых ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Π΅Π· моста Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹:

1. πŸš€ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:УмСньшСниС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΡ€ΠΈ взаимодСйствии ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.


2. 🧩 Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ слоТности: Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ нСобходимости Π² использовании мостов.


3. πŸ”„ Π‘ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм:Π›ΡƒΡ‡ΡˆΠ°Ρ интСграция с соврСмСнными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ управлСния состояниСм.


πŸ–Ό ИзмСнСния Π² onLayout

Ѐункция onLayout Π² React Native ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° послС Π΅Π³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. Π’ вСрсии 0.74 ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ измСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ onLayout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.



ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° с использованиСм onLayout

Π‘Ρ‚Π°Ρ€ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ `onLayout` использовался Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии React Native:

import React from 'react';
import { View, Text } from 'react-native';

class MyComponent extends React.Component {
  handleLayout = (event) => {
    const { width, height } = event.nativeEvent.layout;
    console.log(`Width: ${width}, Height: ${height}`);
  };

  render() {
    return (
      <View onLayout={this.handleLayout} style={{ flex: 1, backgroundColor: 'lightblue' }}>
        <Text>Hello, World!</Text>
      </View>
    );
  }
}

export default MyComponent;

Π’ старой вСрсии React Native ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (margin, padding, border) Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… с row-reverse Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‹ΠΌ. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² соотвСтствиС с Π²Π΅Π±-стандартами.


НовоС повСдСниС

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии React Native 0.74 ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ onLayout ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ практичСски Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊ измСнСниям, связанным с ΠΊΡ€Π°Π΅Π²Ρ‹ΠΌΠΈ значСниями Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… с row-reverse:

import React from 'react';
import { View, Text } from 'react-native';

class MyComponent extends React.Component {
  handleLayout = (event) => {
    const { width, height } = event.nativeEvent.layout;
    console.log(`Width: ${width}, Height: ${height}`);
  };

  render() {
    return (
      <View onLayout={this.handleLayout} style={{ flex: 1, backgroundColor: 'lightblue' }}>
        <Text>Hello, World!</Text>
      </View>
    );
  }
}

export default MyComponent;

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

1. πŸ•Έ Π•Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ с Π²Π΅Π±ΠΎΠΌ: Π’Π΅ΠΏΠ΅Ρ€ΡŒ значСния margin, padding ΠΈ border для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с row-reverse ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π²Π΅Π±Π΅.


2. πŸ”„ ОбновлСниС ΠΊΠΎΠ΄Π°: Если ваш ΠΊΠΎΠ΄ полагался Π½Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… свойств, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ отобраТался Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии.


πŸ“ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

React Native 0.74 приносит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ благодаря Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π±Π΅Π· моста, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π’Π°ΠΊΠΆΠ΅ измСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ onLayout ΠΈ ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ большСго соотвСтствия с Π²Π΅Π±-стандартами. ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π²Π°ΠΆΠ½ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄ ΠΈ внСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° обновлСниями React Native ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ возмоТности для создания Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ! πŸš€πŸ“±

Π’Π΅Π³ΠΈ:

Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

react-native

mobile


Π˜Π·Π±Ρ€Π°Π½Π½Ρ‹ΠΉ пост

User Image

πŸš€ ΠžΠ±Π·ΠΎΡ€ React Native 0.74: Новая АрхитСктура Π±Π΅Π· ...

React Native ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ вСрсия 0.74 принСсла нСсколько Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Одним ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ...

7 ЀСвраля, 2025
10 ΠΌΠΈΠ½ΡƒΡ‚

НСдавний пост

User Image

ПошаговоС руководство ΠΏΠΎ настройкС push-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈ...

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° React Native (Ссли Π½Π΅ создано Ρ€Π°Π½Π΅Π΅)

User Image

ПониманиС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² React Native: JavaScript, Shad...

React Native создан, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π΅ΡΠΏΠ΅Ρ€Π΅Π±ΠΎΠΉΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ,...

User Image

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ React Native с ΠΏΠΎΠΌΠΎΡ‰ΡŒ...

React Native

User Image

πŸš€ Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ .env для прилоТСния Π½Π° React Nati...

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния критичСски Π²Π°ΠΆΠ½ΠΎ для настройки ΠΊΠΎΠ½Ρ„ΠΈΠ³...

User Image

НовыС возмоТности React 19

πŸ”§ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ React: ΠŸΡ€Π΅Π΄ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ компилятор React, ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ In...

User Image

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² 2024 Π³...

Π¦Π΅Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ мобильного прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимост...

User Image

πŸš€ ΠžΠ±Π·ΠΎΡ€ React Native 0.74: Новая АрхитСктура Π±Π΅Π· ...

React Native ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ вСрсия 0.74 принСсла Π½Π΅...