React.js中函数调用之间的非持久状态



通常,我试图在组件加载时加载一些数据(在initializiseSellerData((中(,但我只想这样做一次,即如果刷新页面,就不会再这样做了。请参阅下面的尝试和下具体问题的描述

class Index extends React.Component {
constructor(props) {
super(props);
this.state = {
initialised: false
};
}
componentDidMount = () => 
{
this.initialised()
if(this.state.initialised == false)
{
this.initialiseSellerData();
}   
}

initialiseSellerData = async () => 
{
// this function makes a call to contract to initialise data
}
initialised = async () => 
{
const {sellContract } = this.props
const response = await sellContract.methods.initialised().call()
if(response == true)
{
this.setState({initialised: true})
}
}

我遇到的问题是,在componentDidMount中,initialized((函数被正确调用,initializes状态被设置为true,但当我检查initialized时,它会返回false(应该返回true(。为什么我的状态没有在函数调用之间持续/传递。

我想您忘记使用await了。initialised是一个异步函数。因此调用函数应该使用CCD_ 3或CCD_。

componentDidMount = async () => 
{
await this.initialised()  
}

initialiseSellerData = async () => 
{
// this function makes a call to contract to initialise data
}
initialised = async () => 
{
const {sellContract } = this.props
const response = await sellContract.methods.initialised().call()
if(response == true)
{
await initialiseSellerData();
this.setState({initialised: true});
}
}

最新更新