Будни разработчика
14.6K subscribers
1.36K photos
397 videos
8 files
2.28K links
Download Telegram
#фишка дня

Понадобилось мне тут создать список полей для функции watch (обозреватель введенных значений) в react-hook-form.

Но дело в том, что поля в форме сгруппированы по одному из параметров. Ну, условно: feature1[goods], feature1[variants], feature2[goods], feature2[variants].

А watch на вход принимает одномерный массив строк. Так что же делать?

А тут нам поможет flatMap! Это как map, но любой возвращённый массив развернёт и включит в состав возвращаемого.

Удобно? Удобно.

#js #map #flatMap
👍13👎1
#фишка дня

Понадобилось мне тут создать список полей для функции watch (обозреватель введенных значений) в react-hook-form.

Но дело в том, что поля в форме сгруппированы по одному из параметров. Ну, условно: feature1[goods], feature1[variants], feature2[goods], feature2[variants].

А watch на вход принимает одномерный массив строк. Так что же делать?

А тут нам поможет flatMap! Это как map, но любой возвращённый массив развернёт и включит в состав возвращаемого.

Удобно? Удобно.

#js #map #flatMap #бородач
🫡43👍1
#ссылка дня

Вчера — впервые за шесть лет — побывал на местном JS-митапе, aka HelsinkiJS.

Не надо на меня так смотреть, я не ходок по митапам. Но на нескольких конференциях, впрочем, был.

И как-то так получилось, что помимо пива и пиццы были и доклады. И вот один из них — «Как нарисовать карту?» — был весьма интересен и его результат прекрасно подходит под формат канала.

Автор — Скотт Стрит — постарался объяснить и показать, как работают библиотеки отрисовки карт. Какие форматы, какие решения. Ну и, собственно, шаг за шагом рассказал и показал процесс конвертации мировых координат в координаты элементов сетки и отрисовки их в SVG.

Например, как из описания линии формата MapLibre (там protobuf, но в виде текста как-то так):


{
"layers": [
{
"version": 2,
"name": "roads",
"extent": 4096,

"features": [
{
"id": 42,
"type": "LINESTRING",

"tags": [0, 0],

"geometry": [
9,
1024, 2048,
26,
2048, 0,
1024, 1024,
2048, 0
]
}
],

"keys": ["class"],
"values": [
{ "string_value": "primary" }
]
}
]
}


Путем прямого чтения команд:

9 → MoveTo, count=1
1024, 2048 → dx, dy

26 → LineTo, count=3
2048, 0 → dx, dy
1024, 1024 → dx, dy
2048, 0 → dx, dy


...получается описание кривых в SVG. Тут надо понимать, что сами плитки — тайлы — кодируются как квадрат 4096*4096, а, стало быть, координаты — относительно тайла.

К сожалению, слайдов доклада в наличии нет, но есть, собственно демо и репозиторий.

Конечно, там сейчас всё достаточно минималистично — дороги, парки, дома — но если вам было интересно, как это всё работает — подойдёт прекрасно.

#svg #maplibre #map
7👍4🤩1