通常,我试图在组件加载时加载一些数据(在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});
}
}