在reactjs中,变量值不会在函数内部更新

时间:2018-04-18 07:05:43

标签: javascript reactjs

我正在尝试获取有关我发送的查询的信息。我想让用户知道是否找到了一些结果。但由于某种原因,我无法访问包含找到的结果数量的变量。我也尝试定义一个全局变量,并尝试使用window.variable,但它只是在函数内部没有更新。我想知道这个问题的最佳解决方案是什么。

这是我的代码:

   submitHandle() {
   //const r = 0; 
   //let r = 0; 
    //window.r = 0; // I have tried with all 3 declarations but still nothing
   Initialize sgvizler Query
  var Q = new window.sgvizler.Query(),

  onSuccessFunc = function (dataTable) {
   var r = dataTable.getNumberOfRows();

  }, 
 onFailFunc = function (datatable)
 {
   //handle error
 };

 var tmp = Q.query( " some query " )
 .endpointURL("some endpoint URL")
 .endpointOutputFormat("json");
 tmp.getDataTable(onSuccessFunc, onFailFunc);
 tmp.chartFunction("some chart function") 
 .draw(" div ID");

//handle states
   this.setState({ something: false });
  this.setState({ something: true });
  this.setState({ something: true });
}
 console.log(r) // <-- error = r is undefined.

最好的解决方案是更改onSuccessFunc内部的某些状态但是如果我尝试它然后弹出错误Cannot read property 'setState' of undefined,这很有趣,因为我可以访问并更改它,如果我把它其他setStates所在的位置。所以我想我正在尝试更改局部变量中的变量值,并且反应只是不允许它。任何可以帮助我解决问题的技巧?

1 个答案:

答案 0 :(得分:0)

onSuccessFunc().then(v=>console.log(r)).catch(v=>console.log('error',v))

它可能有用。并检查此link