我是 React Native 的新手,我正在嘗試從查詢中推斷資料,但“回傳”不起作用。也許是因為它需要承諾,我嘗試過,但我還不夠好。我像這樣在 App 函式(在 App.js 中)的 View 組件中呼叫該函式
<View>Search()</View>
但什么也沒顯示。如果我將 console.log 放在 search() 中(在另一個函式中),我可以看到結果,但我無法在我的 App.js 中回傳它(該函式已正確匯入到 App 中)
export function Search() {
db.transaction(
(tx) => {
tx.executeSql("select pver from profile where id=12524234", [],
(tx, results) => {
var a = JSON.stringify(results.rows._array[0].pver)
var data = Number(a)
return data;
});
},
null,
)
};
這就是我根據用戶的建議嘗試做的事情
//this in App.js
import {Search} from './Funzioni'
export default function App() {
const [searchResult, setSearchResult] = useState();
useEffect(() => {
console.log("we are in the useeffect")
Search().then((data)=>{
console.log("set") //doesn't appear
setSearchResult(data)
})
},[]);
//other codes
return (<View>{searchResult}</View> )
}
//this in "Funzioni.js"
export async function Search() {
return new Promise((resolve, reject) => {
db.transaction(
(tx) => {
tx.executeSql("select pver from profile where id=12524234", [],
(tx, results) => {
var a = JSON.stringify(results.rows._array[0].pver)
var data = Number(a)
console.log("the data: " data) //doesn't appear
resolve(data);
});
},
null,
)
});
};
uj5u.com熱心網友回復:
當您渲染組件時,事務方法是異步的,搜索功能仍未解決。
在您的組件中,您應該使用 useState 來存盤資料并使用 useEffect 來獲取資料
const [searchResult, setSearchResult] = useState('');
useEffect(() => {
Search().then((data)=>{
setSearchResult(data)
}).catch((error) => console.log(error));
},[]);
return <View>{searchResult}</View>
您的搜索功能應該是這樣的
export async function Search() {
return new Promise((resolve, reject) => {
const db = SQLite.openDatabase('THE_NAME_OF_YOUR_DATABASE.db')
db.transaction(
(tx) => {
tx.executeSql("select pver from profile where id=12524234", [],
(tx, results) => {
var a = JSON.stringify(results.rows._array[0].pver)
var data = Number(a)
resolve(data);
},
function (error) {
reject(false);
throw new Error(
'Error: ' error
);
});
},
function (error) {
reject(undefined);
throw new Error('error: ' error.message);
},
function () {
console.log('ok');
}
)
});
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417773.html
標籤:
上一篇:如何逃離這個回呼地獄
