簡體   English   中英

ReactJS:如何在按鈕點擊時調用異步函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM