потому может показаться, что и для PowerArray эти методы тоже должны вернуть обычный стандартный массив. И вот внезапно выясняется, что это не так. Например, я об этом не знал. Но благодаря "плохому" учебнику быстро разобрался что и как, узнав про Symbol.species.
заметим, что это вовсе не обязательно все те сущности, которые упоминаются в коде функции. До некоторых из них дело может не дойти. А иные могут прятаться в вызываемых свойствах и функциях, и таким образом будут прочитаны.
Ну а сам контекст может передать значение через несколько "слоёв", и да, эти слои не будут ререндерится при изменении значения контекста, если в оный не смотрят. Пропс-дриллинг заставил бы их перерендериться тоже
GlazOtca, если заморачиваться на вероятные тормоза ввода-вывода, то лучше сразу уйти на что-то асинхронное (например indexedDB) и тогда уже канонично использовать useEffect. Ибо синхронное получение данных в useEffect - не канон.
На перерендере все равно создаётся дохрена объектов в куче. Все эти треугольные скобочки - это объекты новые. Реакт не даёт скучать сборщику мусора )
Так что забей.
В совсем тонких местах всё делается без перерендеров.
Kentavr16, насчет полезности: можно специально проверить работу приложения или каких-то отдельных компонентов в строгом режиме, но держать его включенным постоянно не стоит - будет всякая чертовщина, как у автора вопроса.