我是React Native的新手。 如果有人能幫助我,那就太好了。
我怎樣才能在呼叫API之前先從AsyncStorage設定我的會話狀態。因為這個API呼叫需要sessionId(UserId),所以它只能回傳屬于這個userId的那些資料。
我目前面臨的問題是,當API呼叫資料時,它是用null seesionId而不是我從AsyncStorage獲得的一些值來呼叫的,因為這兩個方法(settingSession, InitList)都是異步的。
const [sessionId, setSessionId] = useState(null) 。
const settingSession = async ( ) => {
await AsyncStorage.getItem('userId')。 then(val => setSessionId(val));
}
useEffect(() => {
settingSession(); //設定sessionId。
InitList(); //呼叫需要會話值的API。
}, []);
const InitList = async ( ) => {
var requestOptions = {
method: 'GET',
redirect: 'follow': 'follow'.
};
try {
//從AsyncStorage獲取sessionId null而不是值。
const response = await fetch("http://127.0.0.1:8080/skyzerguide/referenceGuideFunctions/tetra/user/"/span> sessionId, requestOptions)
const status = await response.status;
const responseJson = await response.json();
if (status == 204) {
throw new Error('204 - No Content')。
} else {
setMasterDataSource(responseJson)。
}
} catch (error) {
console.log(error)。
return false。
}
uj5u.com熱心網友回復:
我在想兩個可能的解決方案:
useEffect(() =>/span> {
settingSession(); //設定sessionId。
}, []);
useEffect(() => {
InitList(); //呼叫需要會話值的API。
}, [sessionId])。
- 在useEffect的呼叫中,將這兩個函式包裹在一個異步函式中,并使用await依次呼叫: 。
useEffect(() =>/span> {
const setSessionAndInitList = async() => {
await InitList(); //呼叫需要會話值的API。
await settingSession(); // Setting sessionId
}
setSessionAndInitList()
}, []);
如果這兩種方法奏效,請告訴我!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/317608.html
標籤:
