はじめに React v18から useSyncExternalStore という Hooks が追加されました。 外部データソースからのデータ読み出しやデータの購読に推奨される Hooks との説明があります。 この外部データソースというのは、例えば React の状態管理対象外の Global、もしくは Module に保持している値も含まれるのではと考えました。 そこで本記事では Module Scope 内で保持している Map Object を Observable にし、useSyncExternalStore で監視できるようにしてみます。 実際のコード ObservableMap の例 例えばこんな感じの実装になるでしょうか。 type MapEventDetail<K, V> = | { type: "delete"; key: K; } | { type: "set";
