Как обработать событие внутри метеорного звонка или после звонка? - PullRequest
0 голосов
/ 08 июля 2019

Я столкнулся с двумя условиями: внутри вызова метеора получить результат и добавить данные, но 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
                }

1 Ответ

1 голос
/ 08 июля 2019

Вам нужно использовать event.persist (), чтобы событие не было нулевым или неопределенным при вызове в обратном вызове.

onSubmit(e) {
  e.persist();
  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 });

        console.log("fileupload24e", e.target.querySelector('#fileinput').files[0]);
      }
    }
  );
}
...