【发布时间】:2019-07-09 01:21:48
【问题描述】:
我遇到了两个条件,在流星调用内部获取结果并添加数据,但 querySelector 抛出错误,对于外部从调用获取结果,但它在流星调用之前执行,从而使结果状态为空任何解决方案? --- 流星 1.8 反应 16.8
onSubmit(e) {
e.preventDefault();
Meteor.call('Add data', name,surname,
adharcard,addess,Mnumber,tags,product,
(error, result) => {
if(error){
console.log("Add data error ", error);
} else {
console.log("Add data res ", result);
this.setState({kUserrId:result});
//below line gives me error
//TypeError: Cannot read property 'querySelector' of null
console.log("fileupload24e",e.target.querySelector('#fileinput').files[0]);
//add result to db
}
});
// -------or---------
//wait for meteor call to complete and some how get result from meteor call
console.log("fileupload24e",e.target.querySelector('#fileinput').files[0]); // this work
// now add data result to db
console.log('kUserrId',this.state.kUserrId);// null
}
【问题讨论】:
-
第二个选项(在“---or---”下面)不能工作,因为它会立即运行而无需等待 Meteor.call 完成。您必须将代码放入 Meteor.call 回调中。除此之外,如果
e是一个实际的DOM 事件,则必须在您的回调中定义e.target。也许console.log(e)某处,这实际上应该工作,没有理由为什么e.target在这种情况下应该是null。
标签: javascript reactjs meteor