1
Mobxを使用するためにセット状態を使用する既存のアプリケーションを変換しようとしています。どのように私はmobxを使用して、設定された状態のコールバック機能を達成することができます。この機能を実現するにはcomponentDidUpdateを使用する必要がありますか?コールバックでハンドルセット状態を行うMobxの方法
Mobxを使用するためにセット状態を使用する既存のアプリケーションを変換しようとしています。どのように私はmobxを使用して、設定された状態のコールバック機能を達成することができます。この機能を実現するにはcomponentDidUpdateを使用する必要がありますか?コールバックでハンドルセット状態を行うMobxの方法
コンポーネントがMobXで再レンダリングされたときにカスタムロジックを実行するには、componentDidUpdate
を使用する必要があります。観測可能な値は同期的に更新されますが、コンポーネントは通常どおり非同期に再レンダリングされます。
例(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私はあなたの声明が完全に正しいとは思わない。観察可能なクリック数は更新された(同期的な)値を持ちますが、DOMはまだ再レンダリングされていません。たとえば、観測値の変化によりDOMから削除された要素があった場合、そのDOM要素は、クリックハンドラ内で値が変更された後も引き続き存在します。 'componentDidUpdate'が実行されるまで、DOMが更新されたことを確認することができます。 'setState'コールバックに関して..."更新が適用された後に起動することが保証されています "は、DOMが変更を反映することを意味します。 – Gobot
@Gobotあなたは正しいです。私は正直言って、この答えを忘れていました。私はそれを削除する必要があります。あなたが言うように、 'componentDidUpdate'をMobXで使用する必要があります。 – Tholle