React.js¶
Для создания пользовательского интерфейса в системе используется библиотека React.js
.
Подробнее о работе React.js
в документации.
MobX.js¶
Для управления состоянием приложения используется библиотека MobX.js
MobX
добавляет возможность наблюдать за существующими структурами данных, такими как объекты, массивы и экземпляры классов. Т.е. используется концепция observer/observable.
Базовые элементы библиотеки - это @observable
, @computed
, runInAction
, reaction
.
Пример класса с наблюдаемым свойством:
class ExampleModel {
@observable
public id: string;
@computed
public get name(): string {
return this.id + '_example';
}
}
При использовании React
, можно сделать компоненты реактивными, обернув компонент в observer
из пакета mobx-react-light
:
interface ExampleComponentProps {
model: ExampleModel;
}
const ExampleComponent: React.FC<ExampleComponentProps> = observer(props => {
const { model } = props;
return (
<div>
{model.id}
</div>
);
});
observer
говорит React-компоненту реагировать на изменение данных. MobX
гарантирует, что компоненты будут перерисовываться, когда это необходимо, но так же не больше, чем нужно. Для правильного реагирования компонента-наблюдателя, ему нужно передавать не внутренние свойства наблюдаемых объектов, а весь объект целиком, т.к. в первом случае будет передано лишь значение, изменение которого ни на что не повлияет.
Подробнее о работе MobX.js
в документации.