Асхат Бикметов, Почему? React Context только для передачи данных вниз по древу? Их нельзя изменить в каком-нибудь компоненте? Если можно, то компоненты, которые эти данные получают - обновятся? Если да, то в чём разница?
React Context только для передачи данных вниз по древу? Их нельзя изменить в каком-нибудь компоненте? Если да, то компоненты, которые эти данные получают - обновятся?
Обновление древа будет происходить за счет обновления компонента Parent и контекст при обновлении будет получать новые значения.
Но этот способ пригоден для единичных случаев. вроде переключения темы или языка. Для управления состоянием приложения следует использовать предназначенные для этого инструменты. Они более гибкие и удобные в использовании.
Mobx это реализация паттерна Observable, и ещё пара полезных функций. Если использовать Mobx можно отказаться реактовских setState и useState. Это полезно для того чтобы отделить модель от представления.
React Context это реакт специфичная реализация Dependency Injection. Используя этот api вы можете передать компонентам заранее определённый объект в контекст (так будто этот объект был в аргументах [пропсах] компонента). В контексте может быть что угодно даже декорированный Mobx объект — стор.
Говоря о Dependency Injection следует упомянуть Компоненты Высшего Порядка (HOC). Они выполняют ту же задачу — внедряют объект в область видимости функции. Однако в отличии от Context api используют прозрачный механизм каррирования.