Для чего нужен хук `useContext` и какие у него ограничения?
- Позволяет получать текущее значение контекста
- При изменении значения все потребители перерисовываются
- Для оптимизации: мемоизировать value, разделить контексты
- При вложенных провайдерах читается ближайший вверх по дереву
- Мутирование объекта в value не вызовет ререндер (сравнение по Object.is)