[英]ReactJS: How do you call an async fuction on button click?
如何在單擊按鈕時調用 fetchData()? 我應該使用 useEffect 調用函數嗎?
function Subscriptions() {
const [allUsers] = useState([]);
useEffect(() => {
fetchData = async () => {
try {
// some code
} catch (err) {
console.log(err);
}
};
}, []);
return (
<Button onclick={fetchData()}>Fetch Data</Button>
);
}
export default Subscriptions;
fetchData
位於不同的嵌套 scope 中,因此按鈕組件無法訪問。 使用useCallback
定義異步回調:
import React, { useState, useCallback } from "react";
function Subscriptions() {
const [allUsers] = useState([]);
const fetchData = useCallback(async () => {
try {
// some code
} catch (err) {
console.log(err);
}
}, []);
return <Button onClick={fetchData}>Fetch Data</Button>;
}
export default Subscriptions;
useEffect 掛鈎在加載時調用。 你應該在 useEffect 之外定義 fetchData function 實際上你不需要 useEffect 這種情況
你必須制作一個 function 然后在 useEffect 中調用兩次以及 onClick。
function Subscriptions() {
const [allUsers] = useState([]);
const fetchData = async () => {
try {
// some code
} catch (err) {
console.log(err);
}
};
useEffect(() => {
fetchData()
}, []);
return (
<Button onclick={()=>fetchData()}>Fetch Data</Button>
);
}
export default Subscriptions;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.