状態管理
状態管理ライブラリの例には、 Vue.js JavaScriptフレームワークの状態管理ライブラリとしてのVuexが含まれる。 Angularフレームワークには、RxJSと呼ばれるObservablesを使用する独自のライブラリが含まれ、 Reduxは、上記のフレームワークまたは他のビューライブラリのいずれかで使用できる汎用の状態管理ライブラリだが、 Reactライブラリで非常に一般的に使用される。 Reduxのドキュメントがほのめかしているように、これらの状態管理ライブラリの多くは軽量であり、相互に置き換えることができる。またインターフェイスコンポーネント(フォームフィールド、ボタン、メッセージなど)がアプリケーション内の一元化されたデータストアで新しい変更をリッスンするpub-subアルゴリズムに基づいて独自のロールを作成することもできる。
このユーザーインターフェイスプログラミング手法では、1つのUIコントロールの状態は、他のUIコントロールの状態に依存する。例えば、入力フィールドに有効な入力値がある場合、ボタンなどの状態管理UIコントロールは有効な状態になり、入力フィールドが空または無効な値を持つ場合、ボタンは無効な状態になる。アプリケーションが成長するにつれて、これはユーザーインターフェイス開発で最も複雑な問題の1つになる可能性がある。
これは特に、ページ上の特定のメッセージまたはフォームの状態が、現在のページ以外の要因に依存する場合、または複数のページで利用できる場合に当てはまる。たとえば、ログインしていて、任意のページに最初にアクセスしたときに「welcome」メッセージが表示され、その後のページにアクセスしたときに表示されないユーザーについて考えてみる。各ページは、ログインしているユーザーの状態を管理しているか?これにより、コピーの貼り付けとコードの重複が多すぎる。代わりに、状態管理パターンを使用してメッセージを処理し(これには、説明されているwelcomeメッセージとともに、エラーメッセージや情報メッセージの処理も含まれる場合がある)、これを呼び出して、メッセージが利用可能になった時にメッセージを受信する。