Size: a a a

Kotlin Community

2020 July 20

RI

Ruslan Ibragimov in Kotlin Community
Тут стейт определен внутри компонента. Это тоже самое что setState с сахарочком через property set
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Тут стейт определен внутри компонента. Это тоже самое что setState с сахарочком через property set
Как внутри если снаружи:
class Position(x: Int, y: Int) {
var x by mutableStateOf(x)
var y by mutableStateOf(y)
}

// source of Example is identical to original
@Composable fun Example() {
var p = remember { Position(0, 0) }
PositionChanger(
  position=p,
  onXChange={ p.x = it }
  onYChange={ p.y = it }
)
}

другое дело, я не знаю, что будет если этот Position создается вовне где-то.
источник

RI

Ruslan Ibragimov in Kotlin Community
Alexander Nozik
Как внутри если снаружи:
class Position(x: Int, y: Int) {
var x by mutableStateOf(x)
var y by mutableStateOf(y)
}

// source of Example is identical to original
@Composable fun Example() {
var p = remember { Position(0, 0) }
PositionChanger(
  position=p,
  onXChange={ p.x = it }
  onYChange={ p.y = it }
)
}

другое дело, я не знаю, что будет если этот Position создается вовне где-то.
Position создается внутри компонента. Создать за функцией подозреваю не получится
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Position создается внутри компонента. Создать за функцией подозреваю не получится
Не знаю. Чисто по идее x и y - это просто обсерваблы и он должен триггерить setState на их изменение. Я это могу сделать и сам.
источник

RI

Ruslan Ibragimov in Kotlin Community
Alexander Nozik
Не знаю. Чисто по идее x и y - это просто обсерваблы и он должен триггерить setState на их изменение. Я это могу сделать и сам.
Почему еще тогда position changer не меняет их явно внутри, а передаются колбеки?
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Почему еще тогда position changer не меняет их явно внутри, а передаются колбеки?
потому что тип onXChange такой?
источник

AN

Alexander Nozik in Kotlin Community
Я же не знаю. Мне чего в примере написали, я то и вижу
источник

RI

Ruslan Ibragimov in Kotlin Community
Ну потому что сломается reconcile
источник

I

Igor in Kotlin Community
Alexander Nozik
Как внутри если снаружи:
class Position(x: Int, y: Int) {
var x by mutableStateOf(x)
var y by mutableStateOf(y)
}

// source of Example is identical to original
@Composable fun Example() {
var p = remember { Position(0, 0) }
PositionChanger(
  position=p,
  onXChange={ p.x = it }
  onYChange={ p.y = it }
)
}

другое дело, я не знаю, что будет если этот Position создается вовне где-то.
Давайте начнем с того что @Composable функция и ее можно вызывать только из других @Composable функций
Оно не предполагает использование вне компонентов
источник

AN

Alexander Nozik in Kotlin Community
Igor
Давайте начнем с того что @Composable функция и ее можно вызывать только из других @Composable функций
Оно не предполагает использование вне компонентов
Ну и фиг с ним, модель-то вне ее лежит
источник

RI

Ruslan Ibragimov in Kotlin Community
Лежит объявление модели, сама модель это поле в функции)
источник

RI

Ruslan Ibragimov in Kotlin Community
val (x, setx) = stateHook() в ReactKt
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Лежит объявление модели, сама модель это поле в функции)
Нет, погодите. Вот есть класс Position, он вообще снаружи
источник

AN

Alexander Nozik in Kotlin Community
Понятно, что поле этого класса - это обсервабл, но он же внешний
источник

RI

Ruslan Ibragimov in Kotlin Community
Alexander Nozik
Нет, погодите. Вот есть класс Position, он вообще снаружи
Это же не питон, скобочка открывается, внутри Composable объявляется поле - создается модель.
источник

RI

Ruslan Ibragimov in Kotlin Community
Хочешь поменять модель в чайлдах - прокидывай колбеки, ничего не напоминает?
источник

AN

Alexander Nozik in Kotlin Community
class Position(x: Int, y: Int) {
var x by mutableStateOf(x)
var y by mutableStateOf(y)
}
где тут Composable?
источник

RI

Ruslan Ibragimov in Kotlin Community
Где тут инстанс?
источник

AN

Alexander Nozik in Kotlin Community
То есть если я создам инстанс не унутре, оно не сработает что ли?
источник

RI

Ruslan Ibragimov in Kotlin Community
Я подозреваю что да
источник