🧱 Π‘ΡƒΡ‚ΡŒ

MobX – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для управлСния состояниСм прилоТСния.

Она автоматичСски отслСТиваСт измСнСния состояния ΠΈ обновляСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅.

πŸ“¦ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

1. Π‘Π»ΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм

ΠŸΡ€ΠΈ большом количСствС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² состояниС становится Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

2. Π›ΠΈΡˆΠ½ΠΈΠΉ ΠΊΠΎΠ΄ React

Для простых сцСнариСв приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useState, useEffect ΠΈ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° зависимостями.

βœ… РСшСниС

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MobX для хранСния состояния ΠΈ автоматичСской рСактивности.

πŸ’» Код

Установка:

npm install mobx mobx-react-lite

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Store

import { makeAutoObservable } from 'mobx';
 
class CounterStore {
	count = 0;
	
	constructor() {
		makeAutoObservable(this);
	}
 
	increment() {
		this.count++;
	}
}
	
export const counterStore = new CounterStore();

ИспользованиС в React

import { observer } from 'mobx-react-lite';
import { counterStore } from './model/store';
 
export const Counter = observer(() => {
	return (
		<>
			<p>{counterStore.count}</p>
			<button onClick={() => counterStore.increment()}>
				+
			</button>
		</>
	);
});

ЧастыС ошибки

  • Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² observer
  • ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ состояниС Π²Π½Π΅ Store
  • ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ большой Store вмСсто раздСлСния ΠΏΠΎ Ρ„ΠΈΡ‡Π°ΠΌ

🎯 Π’Ρ‹Π²ΠΎΠ΄

  • MobX автоматичСски обновляСт UI ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния
  • observer подписываСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° измСнСния
  • бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ рСкомСндуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Store
  • Ρ…ΠΎΡ€ΠΎΡˆΠΎ сочСтаСтся с FSD

πŸ”— Бвязано