Lightning コンポーネントの公開 API (secure-component) の検証
このルールは、公開されているサポート対象のフレームワーク API 関数のみを検証し、プロパティが使用されます。
LockerService が有効化されている場合、フレームワークによってサポート対象外の API オブジェクトまたはコールの使用が阻止されます。つまり、Lightning コードで使用が許可されるのは次の機能です。
- JavaScript に組み込まれた機能 (「組み込み」機能)
- 公開され、サポートされている、Lightning コンポーネントフレームワークに組み込まれた機能
- 公開され、サポートされている、LockerService SecureObject オブジェクトに組み込まれた機能
LockerService より前にコンポーネントへの参照を作成または取得する場合、公開されていないものも含め、任意の関数をコールし、そのコンポーネントで使用可能な任意のプロパティにアクセスできます。LockerService が有効化されると、コンポーネントは新しい SecureComponent オブジェクトで「ラップ」されます。このオブジェクトがコンポーネントとその関数およびプロパティへのアクセスを制御します。SecureComponent によって、公開されているサポート対象のコンポーネント API のみを使用するように制限されます。
ルールの詳細
次のようなコンポーネント関数およびプロパティがサポートされています。
- addHandler
- addValueProvider
- autoDestroy
- clearReference
- destroy
- find
- get
- getConcreteComponent
- getElement
- getElements
- getEvent
- getGlobalId
- getLocalId
- getReference
- getSuper
- getVersion
- isConcrete
- isInstanceOf
- isRendered
- isValid
- set
次のパターンは問題と見なされます。find().find() が、別のコンポーネントにアクセスすることでカプセル化を無効にするアンチパターンであるためです。
1{
2 onclick: function (cmp, evt, help) {
3 cmp.find('foo').find('bar');
4 }
5}次のパターンは、コンポーネント関数を正しく使用しており、代替策として推奨されます。
1{
2 onclick: function (cmp, evt, help) {
3 cmp.find('foo');
4 }
5}