2017-04-18 22 views
1

I 2クラス変化(反応しない)

つを有する成分を反応され、第二には、標準クラス(検証)です。

In Validationクラスは、反応状態の要素として追加されます。

state.formValidator = new FormValidation({id: 'install'}); 
    this.setState(state); 

プロパティとしてのFormValidationクラスには、入力値化のクラスがあります。入力が更新されると、FormValidation isValidプロパティも更新されます。

そして私の反応成分で私はそれを見ることができます。たとえば、入力要素にイベントを追加したときなどです。更新後、私はstate.formValidatorを表示する関数を呼び出しました

isValidプロパティの値は正しいです。しかし、私はこの変化を自動的に検知する反応を強制することはできません。

this.state.formValidator.isValid 

値が、私は私のリアクトコンポーネントでは、この変化を検出することができない他のクラス/コンポーネントによって変化しています。

メソッドcomponentUillUpdateまたはcomponentWillReceivePropsは無音です。

このコンポーネントを強制的に更新するにはどうすればよいですか?

私は各入力イベントに対してonUpdateを追加し、Reactコンポーネントを更新できることを知っています。しかし、より良い方法は、入力ごとにトリガーなしで使用することです。

可能ですか?

答えて

0

反応チェックは単純な変更によって状態が変化します。===チェック。したがって、状態のオブジェクト内のプロパティを変更するだけでは、オブジェクトが参照の等価性によって比較され、オブジェクト内のプロパティを変更しても参照IDは変更されないため、オブジェクトは再レンダリングされません。

このため、一般にあなたの状態は平らでなければなりません。

コンポーネントからthis.forceUpdate()を呼び出すことによって、特定の条件が発生したときにコンポーネントをレンダリングさせることができますが、必要がなければこれは避けてください。二番目のオプションは、あなたのコンポーネントのレンダリング状態を作ることであろう

はあなたformValidator.isValidプロパティに依存したり、あなたformValidator別の場所に保管することだけisValidプロパティは、あなたの状態にコピーする必要があります。

関連する問題