Дима, привет!
1. Вот ты getVariables как есть объявил внутри компонента. В большинстве случаев (как и здесь) - это очень не хорошо. При каждом ререндеринге компонента будет создаваться новая функция и будет ререндериться HTML, зависящий от нее. Или выносить надо отдельно за пределы компонента (чтобы это реальная константа была на постоянку, как это сделано в других местах), или хотя бы оборачивать в useMemo(), чтобы заморозить переменную.