カスタムコンポーネント内の変数についての理解が曖昧だったので、いろいろ実験してみた。
カスタムコンポーネントと変数/コレクション
カスタムコンポーネントの中では、「Set」や「Collect」とかを使って変数やコレクションを宣言することができる。
このカスタムコンポーネント内で宣言した変数の扱い(スコープとか)がどうなっているかが曖昧だったので、いろいろ実験してみた。
※カスタムコンポーネントの中ではUpdateContextは宣言できない。
事前準備

この変数の扱い(スコープとか)はどうなっているのか?について「アクセスアプリスコープ」の設定を交えて色々試してみる。

Set + アクセスアプリスコープ「オフ」





そこで、アクセスアプリスコープが「オフ」のコンポーネントで宣言した変数は
配置したコンポーネント内でのみ保持され、他のコンポーネントやアプリからは参照できない
ことがわかる。
※アプリにも共有されないし、他の同じカスタムコンポーネントとも共有されない
Set + アクセスアプリスコープ「オン」





ということで、
アクセスアプリスコープを「オン」したコンポーネント内で宣言した変数は、アプリのグローバル変数として扱われる
ことがわかる。
※もちろん同じコンポーネントを複数配置した場合、他のコンポーネントにも影響が及ぶ。
コレクションも考え方は同じ



まとめ
ということで、コンポーネント内で宣言した変数の扱いはこんな感じ。
- アクセスアプリスコープ「オフ」:配置したコンポーネントごとに値を保持する
- アクセスアプリスコープ「オン」:アプリのグローバル変数として保持する
配置したコンポーネントごとに値を保持する、ってことがわかったのが今回の収穫で、この変数を使えばコンポーネントでできることの幅がかなり広がりそう!
おまけ:アクセスアプリスコープ「オフ」の状態でアプリから変数を参照したい場合




コメント