Size: a a a

2021 September 21

AN

Alexander Nozik in Kotlin JS
Ну просто когда нужна именно динамика, надо ее и использовать
источник
2021 September 24

AH

Ayrat Hudaygulov in Kotlin JS
пытаюсь сделать сервер сайд рендеринг на граале.

В целом всё неплохо идёт, но когда на сервере вызывается renderAppOnServer() то возвращается такая строка - {} вместо вменяемого объекта.

Реакт предварительно в грааль загрузил. Если бы не загрузил, то всё тонет в ошибках.

Вот думаю может я как-то рендер неправильно написал. В реакте плох, разбираюсь на ходу.
источник

AH

Ayrat Hudaygulov in Kotlin JS
на сервере я в грааль контекст загружаю сбилженный вебпаком скрипт со всей требухой, потом там же вызываю код рендера в строку (которая сейчас возвращает пустой объект) и эту строку помещаю в index.html, подменяя div-root
источник

AH

Ayrat Hudaygulov in Kotlin JS
при этом если вызывать то же самое в браузере (подгрузить скрипт портянку, но вызвать window.renderApp), то внезапно p элемент появляется.

Результат этой операции в консоли тоже - {}, но DOM меняется
источник

AH

Ayrat Hudaygulov in Kotlin JS
Сам спросил, сам разобрался.


fun renderAppOnServer() {
   renderToString {
       child(App::class) {
           attrs.guide = anyWindow.guideToRender.audio.duration
       }
   }
}

надо было написать

fun renderAppOnServer() =
   renderToString {
       child(App::class) {
           attrs.guide = anyWindow.guideToRender.audio.duration
       }
   }


попался на самую нубскую ошибку)
источник

с#

саша сок #KotlinGang... in Kotlin JS
в чём разница?
источник

BP

Bogdan Panchenko in Kotlin JS
Как я увидел - в том что начинает возвращать значение, на что намекает название renderToString
источник

с#

саша сок #KotlinGang... in Kotlin JS
а код не одинаковый и там и там?
источник

BP

Bogdan Panchenko in Kotlin JS
Нет, во втором случае функция что-то возвращает, вот что ? Я думаю стринги, сужу по названию.

То есть тут классическая ошибка про то что ретурн не было
источник

с#

саша сок #KotlinGang... in Kotlin JS
да блин, я слепой?
источник

с#

саша сок #KotlinGang... in Kotlin JS
источник

с#

саша сок #KotlinGang... in Kotlin JS
да, слепой
источник

BP

Bogdan Panchenko in Kotlin JS
fun foo() = "я рендерю, не топропи"
источник

с#

саша сок #KotlinGang... in Kotlin JS
ага, вижу. затупил очень)
источник

BP

Bogdan Panchenko in Kotlin JS
Я думаю автор спецом это вложил)
источник

BP

Bogdan Panchenko in Kotlin JS
(на самом деле нет, но в пазлерах Кекса подобное было)
источник

AH

Ayrat Hudaygulov in Kotlin JS
Да, все так. Рендер в строку должен возвращать строку. А возвращал unit, который рендерился в {}
И компилятор не помог (
источник
2021 September 25

BP

Bogdan Panchenko in Kotlin JS
А что он должен сделать? в фи шарпе вроде тоже самое.

Указав явный тип не имели бы проблем.
источник

AH

Ayrat Hudaygulov in Kotlin JS
в фшарпе это варнинг когда игнорируешь значение возвращаемое функцией. А т.к. нормальные люди варнинги превращают в ерроры, такой код бы не скомпилился
источник

BP

Bogdan Panchenko in Kotlin JS
Чего это ? Unit это значение, ты его возвращаешь...
источник