我正在使用一个由几个FormControl对象(react-bootstrap)组成的表单和一个google自动完成的自定义表单控件(带react-geosuggest库),我遇到的问题是geo-suggest异步返回值。
当用户搜索位置时,我立即(同步)搜索到的搜索值的一侧,在从{{1}检索地址的LatLng时调用我的代码中的回调} component(因为组件执行http请求)。
当用户点击“保存”按钮时,我会提取表单的状态,然后打算将其发送到服务器。
我的问题是,如何使用我需要的LatLng信息“等待”react-geosuggest
组件的回调?
我提出了一个解决方案,但它并不是很优雅:
react-geosuggest
组件的回调函数(将检查表单是否已填写,调用保存按钮的回调)。有没有人知道更好的模式可以使用,或者是否有意支持我的方法?
如果重要的话,我也在使用Redux。
答案 0 :(得分:0)
您可以通过以下方式执行此操作。
从react-geosuggest
回调中,调用handleSubmit函数。
在表单中,将 onChange
函数添加到输入字段,并将数据存储在您的反应状态中。
单击提交按钮,禁用输入字段并将this.state.submit设置为true。
现在在handleSubmit函数中,执行以下操作:
if (this.state.submit) {
sendDataToServer(this.state)
}
else {
this.handleSubmit()
}
这将确保仅从react-geosuggest
回调中调用handleSubmit回调。即使异步值在其他表单值(sync)之前到达,即用户在调用位置搜索之后单击提交按钮,仍然不会将数据发送到服务器,直到收集了所有表单数据为止