状态返回不确定的 - 反应生命



我正在尝试从异步存储中获取值并将其分配给状态。访问URL

时,状态的价值将在无效/未定义
 constructor(props) {
    super(props);
    this.state = {
        stAccntList: [],
        stUserAccountNo: '',
        stCustNo: '',
        resp: '',
    };
    AsyncStorage.getItem('UserAccountNo').then((value) => {
        if (value != '') {
            accno = value;
            this.setState({ stUserAccountNo: value });
           // alert(this.state.stUserAccountNo);
        }
    }).done();
    AsyncStorage.getItem('CustomerNo').then((value) => {
        if (value != '') {
            cusno = value;
            this.setState({ stCustNo: value });
           // alert(this.state.stUserAccountNo);
        }
    }).done();

}

     componentWillMount() {
        let restUrl = urls.URL + this.state.stCustNo + "/" + "accounts" + "/" + this.state.stUserAccountNo;
}

this.state.custno和this.state.stuseraccountno正在返回null。

请让我知道它出错了哪里。

由于您试图异步获取数据并更新状态,因此在执行ComponentWillMount之前可以使用数据。

您可以在componentdidmount中使用 async-await

constructor(props) {
    super(props);
    this.state = {
        stAccntList: [],
        stUserAccountNo: '',
        stCustNo: '',
        resp: '',
    };
}
async componentDidMount() {
   var userAccountNo = await AsyncStorage.getItem('UserAccountNo');
   var CustomerNo = await AsyncStorage.getItem('CustomerNo');
   if (userAccountNo != '') {
        this.setState({ stUserAccountNo: userAccountNo });
   }
   if (CustomerNo != '') {
        this.setState({ stCustNo: CustomerNo });
   }
   if(userAccountNo !== '' && CustomerNo !== '') {
     var restUrl = urls.URL + this.state.stCustNo + "/" + "accounts" + "/" + this.state.stUserAccountNo;
   }
}

是立即或以后使用的restURL(即单击事件或其他某些事件)?如果立即使用,您可能需要使用承诺或异步等待,以跟踪何时AsyncStorage在使用Resturl之前完成。如果您稍后使用URL,则可以在需要使用之前依靠它完成或在使用前立即检查。

相关内容

  • 没有找到相关文章

最新更新