2017-04-18 54 views
1

我有2類變化狀態由不同的類(未反應)

一個是反應組分,第二個是標準類(驗證)。

在驗證類中添加爲反應狀態中的元素。

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

FormValidation類作爲屬性具有Input valdiation的類。當某些輸入被更新時,那麼FormValidation的isValid屬性也會被更新。

而在我的反應組件中,我可以看到它。例如,當我在輸入元素上添加事件時。更新後,我調用函數來顯示state.formValidator

IsValid屬性值是正確的。但我無法強制反應自動檢測到這一變化。

this.state.formValidator.isValid 

值由其他類/成分變更我無法檢測到我的陣營組成部分這一變化。

方法componentWillUpdate或componentWillReceiveProps是沉默。

如何強制更新此組件?

我知道我可以添加爲每個輸入事件的onUpdate,然後更新我的陣營組成部分。但更好的方法是將其用於每個輸入的觸發器。

這有可能嗎?

回答

0

陣營通過簡單===檢查的檢查狀態變化。因此,如果只是在狀態中更改對象內的某個屬性,它將不會重新渲染,因爲對象按引用相等進行比較,並且更改對象內的屬性不會更改其引用ID。

出於這個原因,它一般不是一個好主意,在你的狀態的對象 - 你的狀態應該是平坦的。

你可以強迫你的組件時,一定條件下通過從組件調用this.forceUpdate()發生,但並不鼓勵,除非迫切需要進行渲染。

第二個選擇是使您的組件的渲染狀態取決於你formValidator.isValid財產,或有你的formValidator在別處保存,只有isValid屬性被複制到你的狀態。