this.setState(() => ({ shift: event.target.dataset.shift}), this.filter);
События SyntheticEvent содержатся в пуле. Это означает, что объект SyntheticEvent будет повторно использован, а все его свойства будут очищены после вызова обработчика события. Это необходимо из соображений производительности. Именно поэтому нельзя использовать синтетические события асинхронно.
буду топить за sass, поскольку https://2019.stateofcss.com/technologies/pre-post-... он популярнее и более используемый
Скорость загрузки сайта низкая из-за огромного .css