[英]hooks not set state at first time
我是 react native 的初學者,在我的項目中,我在按下按鈕用戶名和身份驗證 state 后沒有初始化我的變量,但在第二次按下我的 state 初始化並顯示數據后,我的搜索文件可以幫助我解決這個問題。 謝謝
const DataFeatch = async () => {
await Authentication_Creator();
let SearchData = {
"user_name": await UserName,
"user_authentication": await User_Authentication,
};
try {
let response = await fetch('fechURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(SearchData),
});
let json = await response.json();
if (json == 'no result') {
something
} else {
SetDataSource(json);
}
}
catch{
ERRoR
}
}
我的 Authentication_Creator 是
const Authentication_Creator = async () => {
var RNFS = require('react-native-fs');
var path = RNFS.DocumentDirectoryPath + 'path';
var data = await RNFS.readFile(path, 'utf8');
var mydata = await JSON.parse(data);
let hash = data;
hash = md5(hash);
SetUserName(() => mydata.UserName);
SetUser_Authentication(() => hash);
}
您必須對代碼進行一些更改,不能使用 await 用戶名,它對反應 state 沒有影響。
您可以像這樣更改 Authentication_Creator:
const Authentication_Creator = async () => {
var RNFS = require('react-native-fs');
var path = RNFS.DocumentDirectoryPath + 'path';
var data = await RNFS.readFile(path, 'utf8');
var mydata = await JSON.parse(data);
let hash = data;
hash = md5(hash);
return { user_name: myData.UserName, user_authentication: hash};
}
之后在您的數據獲取 Function 中:
const DataFeatch = async () => {
let SearchData = await Authentication_Creator();
// and other code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.