React.js 与 Javascript 变量声明

Posted

技术标签:

【中文标题】React.js 与 Javascript 变量声明【英文标题】:React.js vs Javascript variable declaration 【发布时间】:2022-01-22 13:46:38 【问题描述】:

我这里有一个使用 React.js 的代码,这个代码在控制台中返回 undefined..

getTicket = async() =>
    var ticketData;
    this.state.client.get('ticket').then(
        await function(data)
            ticketData = data['ticket'].toString();
            console.log(data['ticket'])
        
        
    )
    await this.setState( ticketInformation: ticketData )

虽然这个是javascript,但这段代码返回ticketData的值..

  var ticketData;
  client.get('ticket').then(
    function(data) 
      ticketData = data['ticket'];
      console.log("TICKET:: " + JSON.stringify(ticketData.id));
    
  );

我的问题是,两者有什么区别?如您所见,在第一个代码中,我使用的是 async/await,据我所知,它不应该返回 undefined。不知何故,第二个代码没有 async/await,但完全为全局变量赋值。

【问题讨论】:

你需要先检查 React。当 this 关键字不可用时,您正在使用功能组件 + this.state。此外,您也没有声明任何状态。 @Kid 我已经在我的代码之上声明了我的状态。当这个关键字不可用时你是什么意思? 【参考方案1】:

我猜那是因为当你第一次调用 getTicket 函数时,this.state.client 是未定义的。您应该首先给它一个默认值,但据我所知,将功能赋予“状态”并不好。您应该将转换值函数作为外部回调,而不是在“状态”中,因为每当状态值发生变化时,React 都会重新创建函数并且浪费内存。

【讨论】:

【参考方案2】:

尝试如下,希望你有一个目标。

   await this.state.client.get('ticket').then(
        function(data)
            ticketData = data['ticket'].toString();
            console.log(data['ticket'])
        
        
    )

【讨论】:

以上是关于React.js 与 Javascript 变量声明的主要内容,如果未能解决你的问题,请参考以下文章

React.js与Vue.js:流行框架的比较

react.js JSX 简介

Node.js 之react.js组件-JSX简介

React 、React.js、React Native三者关系

需要帮助在 Vue.js 框架中设置变量

React.js与Vue.js:流行框架的比较