1
我試圖將使用set狀態的現有應用程序轉換爲使用Mobx。我如何使用mobx實現設置狀態回調功能。我是否需要使用componentDidUpdate來實現此功能?Mobx通過回調處理設置狀態的方法
我試圖將使用set狀態的現有應用程序轉換爲使用Mobx。我如何使用mobx實現設置狀態回調功能。我是否需要使用componentDidUpdate來實現此功能?Mobx通過回調處理設置狀態的方法
你是對的,因爲你需要使用componentDidUpdate
來執行定製邏輯,當組件被重新渲染與MobX。可觀察值將被同步更新,但組件將像往常一樣異步重新渲染。
實施例(JSBin)
@observer
class App extends Component {
@observable value = ''
componentDidMount() {
setTimeout(() => this.value = 'focus', 1000);
}
componentDidUpdate() {
this.ref.focus();
}
render() {
return (
<input
ref={ref => this.ref = ref}
value={this.value}
onChange={e => this.value = e.target.value}
/>
);
}
};
謝謝,將嘗試。 –
@Tholle我不認爲你的陳述是完全正確的。即使'clicks'可觀察值將具有更新(同步)值,DOM也不會被重新渲染。例如,如果由於可觀察的值更改而導致DOM元素已從DOM中刪除,則在點擊處理程序中該值發生更改後,該DOM元素仍然存在。直到'componentDidUpdate'你能確定DOM已被更新。關於'setState'回調......「在應用更新後保證觸發」,這意味着DOM將反映任何更改。 – Gobot
@Gobot你說得對。說實話,我忘了這個答案。我應該刪除它。正如你所說,'componentDidUpdate'必須和MobX一起使用。 – Tholle