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 变量声明的主要内容,如果未能解决你的问题,请参考以下文章