All streams
Search
Write a publication
Pull to refresh
7
0
Send message
Написание приложения с единой кодовой базой на несколько платформ.
Приложение на React Native запускается на Android и iOS.
Я не пробовал на нем их писать.

Так как основная идея RN это использовать JS для написания приложения, то от нее и будем отталкиваться.

Все исполняется в JS потоке и через мост дергаются OEM виджеты — то однозначно будет лагать.
Но если использовать движки и/или либы для написания игр — то опять вопрос к передаче данных между JS потоком и движком.

А если убрать JS поток — то это уже и не React Native вовсе.
Ну так правильно.
Метод build вызывается каждый раз при setState.
Внутренние методы тоже. Поэтому _weNeedItOnlyOnce вызовется еще раз.
Если обернуть const вызов в функцию — он тоже вызовется еще раз.
Но не сам виджет — он const.

Если const убрать — то будет следующее поведение:

Вариант с функцией.
1) Вызывается функция -> создается виджет -> создается RenderObject и Element.
2) Обновляем State.
3) Вызывается функция -> создается виджет -> НЕ создается RenderObject и Element, а используются те же самые.

Вариант с виджетом:
1) Создается виджет -> создается RenderObject и Element.
2) Обновляем State.
3) Создается виджет -> НЕ создается RenderObject и Element, а используются те же самые.

В обоих случаях новый экземпляр виджета и новый экземпляр BuildContext.

Если const виджет возвращать из функции, то виджет создастся 1 раз и более не пересоздастся.
Виджет вынесенный в метод — имеет такое же поведение.

В обоих случаях одинаковое поведение контекстов.
И виджеты с состоянием ведут себя также.

И const тоже.

Я пытался придраться и найти разницу, но не нашел.

Ткните меня носом — “Вот смотри код и тут разница“, а так что-то непонятно. На словах нельзя, а на деле нет разницы.

Я, безусловно, могу ошибаться и буду рад, если мне укажут (с пруфами) что я не прав.

Information

Rating
Does not participate
Registered
Activity