イベントのベストプラクティス
以下にイベントを使用する場合のベストプラクティスをいくつか示します。
できる限りコンポーネントイベントを使用する
可能な場合は常に、アプリケーションイベントではなくコンポーネントイベントを使用します。コンポーネントイベントを処理できるのは、コンテインメント階層で上位にあるコンポーネントのみであるため、それらのイベントを把握する必要があるコンポーネントにのみ使用が限定されます。アプリケーションイベントは、特定のレコードへの移動など、アプリケーションレベルで処理する必要があるものに適しています。アプリケーションイベントにより、アプリケーションの別々の部分にあって直接的なコンテインメント関係がないコンポーネント間で通信が可能になります。
低レベルのイベントをビジネスロジックイベントと区別する
クリックなどの低レベルのイベントをイベントハンドラで処理し、approvalChange イベントやビジネスロジックイベントに相当するものなどは、高レベルのイベントとして再起動することをお勧めします。
コンポーネントの状態に基づく動的アクション
コンポーネントの状態に応じてクリックイベント時に異なるアクションを呼び出す必要がある場合は、次のアプローチを試します。
- コンポーネントの状態を、New (新規) や Pending (待機中) などの非連続値としてコンポーネントの属性に保存します。
- クライアント側コントローラに、次に実行するアクションを判断するロジックを配置します。
- コンポーネントのバンドルでロジックを再利用する必要がある場合は、ロジックをヘルパーに配置します。
次に例を示します。
- コンポーネントのマークアップに <ui:button label="do something" press="{!c.click}" /> が含まれる。
- コントローラで、click 関数を定義している。この関数は適切なヘルパー関数に代行させますが、正しいイベントを起動する可能性もあります。
ディスパッチャコンポーネントを使用したイベントのリスンおよびリレー
イベントをリスンしているハンドラコンポーネントのインスタンスが多数あるときは、イベントをリスンするディスパッチャコンポーネントを指定したほうがよい場合があります。ディスパッチャコンポーネントは、コンポーネントのどのインスタンスで詳細情報を受け取るかを判断する一定のロジックを実行し、別のコンポーネントイベントまたはアプリケーションイベントをこれらのコンポーネントのインスタンスで起動することができます。