我的 Meteor + React 应用程序中有一个文本框。我想将其值同步到 Mongo 集合。但是,我不想在每次击键后更新集合,只有在用户停止输入几秒钟后才更新。
我render()
函数中的文本框如下所示:
<input type="text" ref="answer" onChange={this.onChange} value={this.state.someValue} />
我将文本框值存储在其中,this.state
而不是this.data
因为this.data
反映了可能尚未更新的 Mongo 集合。
到目前为止,所有这些都有效。
问题:
如果另一个客户端更新集合,我希望文本框显示更新的值。为此,我必须this.state
在函数内部进行更新getMeteorData()
,但这是不允许的,并且出现错误:“Calling setState inside getMeteorData can result in infinite loop”。
现在我有一个解决方法,我手动更新 and 中的文本框值componentDidMount()
,getMeteorData()
但感觉很hackish,我一点也不喜欢它。
有一个更好的方法吗?getMeteorData()
如果我保证我会成为一个好孩子并且表现得很好,我是否可以强制更新内部状态?