2017-03-16 11 views
0

それは、このここに(テンプレートの構文セクション)の話をするとき、正確例えば、Angular2ドキュメントの「副作用」によって意味するものは私のために完全には明らかではありません:式の評価は副作用がありますどのように
Angular2のドキュメントで「副作用」とはどういう意味ですか?

Avoid side effects 
As mentioned previously, evaluation of a template expression should have no visible side effects. The expression language itself does its part to keep you safe. You can't assign a value to anything in a property binding expression nor use the increment and decrement operators. 

Of course, the expression might invoke a property or method that has side effects. Angular has no way of knowing that or stopping you. 

The expression could call something like getFoo(). Only you know what getFoo() does. If getFoo() changes something and you happen to be binding to that something, you risk an unpleasant experience. Angular may or may not display the changed value. Angular may detect the change and throw a warning error. In general, stick to data properties and to methods that return values and do no more. 

とこれがUIプレゼンテーションやロジックにどのように影響するのでしょうか?

答えて

2

値バインディングの式は値を計算して返すだけで、他の変数の状態は変更しないでください。

反対に、イベントバインディングの式は副作用を引き起こすと考えられています。これは、イベントリスナーが呼び出された後、Angularが変更検出を実行する理由です。

は、ほぼすべての言語でもhttps://en.wikipedia.org/wiki/Pure_function

1

同様を参照してください、プロパティは、状態の変化を引き起こすか、いずれかの長時間実行タスクを実行するべきではありません。 マイクロソフトのガイドラインここでは例を参照してください:あなたが見ることができるように、変更の検出は非常に単純であるhttp://blog.angular-university.io/how-does-angular-2-change-detection-really-work/

:アカウントには、この全体的なガイドラインを撮るhttps://msdn.microsoft.com/en-us/library/ms182181.aspx

、あなたはここで変更追跡コードを参照してください:値が異なる場合、等価性をチェックし、 "isChanged"というプロパティをtrueに設定します。今

、いくつかのプロパティは以下のようなものを実行するとどうなるか想定しています

  • のWeb-APIは、他のプロパティを変更する
  • を呼び出しますが
  • は冪等

されていない値は、私にはわかりません正確なコードですが、チェンジトラッカーは非常に多くの実行を実行するためにできるだけ反応的でシンプルな状態を保つ必要があります。そのため、プロパティを可能な限り単純に保つことが推奨されますe。

関連する問題