MobX 和 Zustand 是兩個用於管理 React 應用狀態的不同庫。它們有不同的設計理念和用法,各自有其優勢和適用場景。

MobX

什麼是 MobX?

MobX 是一個簡單、可擴展的狀態管理庫,旨在使應用的狀態管理變得簡單和可預測。它基於響應式設計原理,通過觀察狀態變化自動更新 UI,減少了手動更新 UI 的工作。

特點和優勢

  1. 響應式設計:MobX 依賴於觀察和自動追蹤狀態變化,當狀態改變時,自動更新相關的 UI。
  2. 簡單易用:MobX 的 API 非常簡單,容易上手,適合各種規模的應用。
  3. 靈活:可以在不需要全域狀態的情況下,只在局部使用 MobX。
  4. 高效能:MobX 的響應式更新機制非常高效,只有在狀態實際發生變化時才更新。

使用範例

import { makeAutoObservable } from 'mobx';
import { observer } from 'mobx-react-lite';
import React from 'react';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    this.count++;
  }

  decrement() {
    this.count--;
  }
}

const counterStore = new CounterStore();

const Counter = observer(() => (
  <div>
    <h1>{counterStore.count}</h1>
    <button onClick={() => counterStore.increment()}>Increment</button>
    <button onClick={() => counterStore.decrement()}>Decrement</button>
  </div>
));

function App() {
  return (
    <div className="App">
      <Counter />
    </div>
  );
}

export default App;

Zustand

什麼是 Zustand?

Zustand 是一個輕量級的、靈活的狀態管理庫,專為 React 應用設計。Zustand 使用簡單的 API 和 Hook,使得狀態管理變得非常直觀。

特點和優勢

  1. 簡單輕量:Zustand 的 API 非常簡單,庫本身也非常輕量。
  2. 易於集成:可以輕鬆地與 React 應用集成,使用 Hook 來管理和訪問狀態。
  3. 無樣板代碼:Zustand 的設計使得狀態管理不需要太多樣板代碼。
  4. 靈活性高:可以靈活地定義和使用狀態,不需要遵循特定的模式。

使用範例