Когда нужно отсортировать массив объектов сразу по нескольким полям — вместо вложенных if можно сделать так:
const sortBy = (arr, keys) => [...arr].sort((a, b) =>
keys.reduce((res, k) => res || (a[k] > b[k] ? 1 : a[k] < b[k] ? -1 : 0), 0)
);
Где пригодится:
#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🌚3🔥2❤1
Бывает: сделал коммит слишком рано — что-то забыл или добавил лишнее. Удалять изменения не хочется, а переписывать руками — долго.
Решение:
git reset --soft HEAD~1
— последний коммит исчезнет из истории,
— все изменения вернутся в staged,
— можно поправить и закоммитить заново.
#readme #git
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥1🥱1
Подозреваете рост памяти после навигации? Включите детектор «болтливых» ре-рендеров — часто именно они топят heap.
Решение:
npm i -D @welldone-software/why-did-you-render
// src/index.jsx
import React from 'react'
import wdyr from '@welldone-software/why-did-you-render'
wdyr(React, { trackAllPureComponents: true }) // dev only
(точечно: MyWidget.whyDidYouRender = true)
— Логи в консоли с причинами ре-рендера (diff пропсов/стейта),
— Быстрый поиск «шумных» компонентов: несмемоизированные пропсы, коллбеки без useCallback, эффекты без cleanup.
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1