Всем привет. Есть State<String> value которого является параметром для функции

Sample. Сначала у State одно значение, затем другое. Но LaunchedEffect запоминает самое первое значение, а на новые ему все равно. Почему так ? Ведь если у нас _text объявлен var, то лямбда должна обращаться к этому полю через ObjectRef и видеть актуальное значение. Что я упускаю ?

12 ответов

12 просмотров

LaunchedEffect ничего не запоминает. Он исполняет переданную ему лямбду.

не пробовали LaunchedEffect(_text) { ... }?

Andrew-F Автор вопроса
Лёша Лазарев
не пробовали LaunchedEffect(_text) { ... }?

скорее всего заработает, но идея в том, чтобы не перезапускать лямбду в LaunchedEffect

А пробовали не использовать _text, а завязаться сразу на text?

Andrew-F Автор вопроса
Konstantin Dovnar
А пробовали не использовать _text, а завязаться ср...

Да, первое, что сделал. Также безрезультатно (

Andrew F
скорее всего заработает, но идея в том, чтобы не п...

а можете объяснить, какой результат хотите получит? При изменении параметра продолжить выполнять лямбду с новым значением?

Andrew-F Автор вопроса
Лёша Лазарев
а можете объяснить, какой результат хотите получит...

да, именно так: чтобы лямбда "поймала" новое значение и без ее рестарта

Потому что когда второй раз вызывается Sample, то для_text создаётся новый objectRef, но launchedeffect использует лямбду, которая захватила первый objectref, поэтому при перевызовах Sample значение не обновляется. Чтобы заработало надо использовать remember (например rememberUpdatedState), тогда при перевызовах будет видно последнее значение

Andrew-F Автор вопроса
Alexander Sitnikov
Потому что когда второй раз вызывается Sample, то ...

то есть получается, что при перевызове Sample _text - это уже совсем новая переменная, а ObjectRef в лямбда ссылается на старый _text ?

Andrew-F Автор вопроса
Andrew F
то есть получается, что при перевызове Sample _tex...

обычный remember с ключом кстати не работает в данном случае

Andrew-F Автор вопроса

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта