unoptimized
. Тогда изображения просто будут грузиться с указанного адреса безо всякой дополнительной обработки.src
) для Image
с главной страницы в отдельный объект, который можно будет импортировать в файле хука, чтобы и там и там параметры были одинаковыми. Иначе, если вы на главной поменяете размеры или качество, прелоадинг снова сломается (потому что изменится итоговый url).// Если нужно полностью удалить элемент, внутри которого есть хотя бы один нулевой lvl
array_filter(
$a,
function (array $item): bool {
foreach ($item as $key => $value) {
if (preg_match('~^lvl\d+$~', $key) === 1 && ($value['count'] === 0 || $value['min'] === 0 || $value['max'] === 0)) {
return false;
}
}
return true;
}
);
// Если нужно удалять только сами нулевые lvl
array_map(
function (array $item): array {
return array_filter(
$item,
function ($value, string $key): bool {
return preg_match('~^lvl\d+$~', $key) !== 1 || ($value['count'] !== 0 && $value['min'] !== 0 && $value['max'] !== 0);
},
ARRAY_FILTER_USE_BOTH
);
},
$a
);
[
[
'name' => 'Alex',
'levels' => [
['index' => 1, 'count' => 5, 'min' => 12, 'max' => 5],
['index' => 2, 'count' => 0, 'min' => 5, 'max' => 7],
['index' => 3, 'count' => 18, 'min' => 0, 'max' => 8],
],
],
[
'name' => 'Igor',
'levels' => [
['index' => 1, 'count' => 5, 'min' => 12, 'max' => 5],
['index' => 2, 'count' => 0, 'min' => 5, 'max' => 7],
['index' => 3, 'count' => 18, 'min' => 0, 'max' => 8],
],
]
];
Тогда и код фильтрации будет простым и понятным.$array = [...];
$del_val = '137';
// В современном PHP
$data = array_filter($array, fn (array $item): bool => $item['tariff_id'] == $del_val);
// Если у вас старая версия
$data = array_filter($array, function (array $item) use ($del_val): bool {
return $item['tariff_id'] == $del_val;
});
$item = end($data);
echo $item['mode_id'];
// Но можно и вашу версию доработать
$data = null;
foreach ($array as $arr) {
if ($arr['tariff_id'] == $del_val) {
$data = $arr;
}
}
echo $data ? $data['mode_id'] : 'not found';
oldPrice: dto.oldPrice
ProductCardDTO
, вовсе не означает, что RTK магически вам все поля, полученные в ответ на запрос, переименует. Если сервер отдаёт old_price
, то так и должно поле в интерфейсе называться. Интерфейс подстраивается под реальность, а не наоборот. However, slots are not route segments and do not affect the URL structure. For example, for /@analytics/views, the URL will be /views since @analytics is a slot.https://nextjs.org/docs/app/building-your-applicat...
Так же есть вопрос по key, сыпет в консоль предупреждение, что кей не уникален в самом последнем return. Во-первых, я не пойму зачем там key, во-вторых, я не пойму как это пофиксить.Вы рендерите элементы массива (pages), и, чтобы отличать их друг от друга, Реакту нужен какой-то идентификатор (подробнее в документации). У вас он как бы есть, но, во-первых, как сказано выше, его ломает то, что вы храните в state уже отрендеренные компоненты, а во-вторых, вы в качестве ключа для всех элементов используете одно и то же значение (cardDetails.id), а оно должно быть уникальным.
как выключить двойной вызов setTimeout в dev modeНе надо его выключать, надо корректно чистить таймауты, для отлова таких проблем двойной вызов и делают.
Какие есть способы отслеживания подключений, как это делают соцсети?Магии не существует. «Соцсети» просто держат флаг активности ещё несколько секунд после разрыва соединения, чтобы обработать ситуацию «обновления страницы».