Meteor + React アプリケーションにテキストボックスがあります。その値を Mongo コレクションに同期したいと考えています。ただし、キーストロークごとにコレクションを更新するのではなく、ユーザーが数秒間入力を停止した場合にのみ更新します。
私のrender()
関数のテキストボックスは次のようになります。
<input type="text" ref="answer" onChange={this.onChange} value={this.state.someValue} />
まだ更新されていない可能性があるMongoコレクションを反映しているため、this.state
代わりにテキストボックスの値を保存します。this.data
this.data
これまでのところ、これはすべて機能します。
問題:
別のクライアントがコレクションを更新した場合、テキスト ボックスに更新された値を表示する必要があります。このために、関数this.state
内で更新する必要がありますが、それは許可されておらず、エラーが発生します: 「getMeteorData 内で setState を呼び出すと、無限ループが発生する可能性があります」。getMeteorData()
現在、 と のテキストボックスの値を手動で更新する回避策がありますが、componentDidMount()
ハックgetMeteorData()
のように感じられ、まったく気に入りません。
これを行うより良い方法はありますか?getMeteorData()
私が良い子になり、礼儀正しく振る舞うと約束した場合、内部の状態の更新を強制することはできますか?