我正在尝试从异步存储中获取值并将其分配给状态。访问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,则可以在需要使用之前依靠它完成或在使用前立即检查。