Компонент рендерит всё. Пришли изменения — новый рендер всего-всего. Если у вас в рендере происходит какая-то фильтрация/сортировка данных, она пройдёт полностью для тех данных, которые доступны в данный момент. Конечно же, у реакта есть возможность закэшировать какой-то компонент (который вы обозначили с помощью key или в который передались идентичные данные), и в таком случае скорость сильно не страдает, но нужно иметь ввиду, что если к массиву из миллиона элементов добавится массив из 100 тысяч элементов, реакт будет обрабатывать все 1,1 миллион элементов, а не ту новую сотню тысяч, которая пришла. Часть он возьмёт из кэша, часть отрисует заново.
Лично из моей практики, производительность начинает сильно падать, если вы перед рендерингом постоянно применяете сортировку, фильтрацию и подобные вещи, которые требуют обходить весь массив с данными. Я обычно делаю фильтрацию/сортировку только в момент, когда приходят изменения данных, и сохраняю это в состоянии, чтобы не делать этого каждый раз перед отрисовкой.
Если элементов становится слишком много, тормоза появятся не только из-за реакта, а из-за того. что браузер тоже не резиновый, и ему тоже требуются ресурсы и время на отрисовку страницы.