How to use useSyncExternalStore hook

// demo/useSyncExternalStore
 
export class Counter {
  state: { count: number };
  listeners: Set<() => void>;
 
  constructor() {
    this.state = { count: 0 };
    this.listeners = new Set();
 
    this.inc.bind(this);
    this.des.bind(this);
  }
 
  setState(fnOrState: ((state: { count: number }) => { count: number }) | { count: number }) {
    const newState = typeof fnOrState === 'function' ? fnOrState(this.state) : fnOrState;
    this.state = {
      ...this.state,
      ...newState,
    };
    this.listeners.forEach((listener) => {
      listener();
    });
  }
 
  subscribe = (callback: () => void) => {
    this.listeners.add(callback);
    return () => {
      this.listeners.delete(callback);
    };
  };
 
  getSnapshot = () => this.state;
 
  inc() {
    this.setState((state) => ({ count: state.count + 1 }));
  }
 
  des() {
    this.setState((state) => ({ count: state.count - 1 }));
  }
}