簡體   English   中英

API 調用 Reactjs

[英]API Call in Reactjs

我想改變市場的 state

方法:

 publishSample = () => {
    this.Service
      .publish()
      .then((response) => {
        this.setState({
          loading: true,
        });
      })
      .catch((error) => {
        console.log(error);
      });
  };

我的組件:

            {loading ? (
              <div>{ENUM.PUBLISH}</div>
            ) : (
              <div>
                <p> {ENUM.CREATE}</p>
              </div>
            )}

在我上面的代碼中,每當我執行 API 調用時,我都想將值設置為“PUBLISH”,並且加載為真。 我能夠做到這一點,但每當我導航到其他頁面(即使沒有刷新),而不是 PUBLISH,我都會獲得“CREATE”的價值。 每當我進行 API 調用時,我想將 state 保存為 PUBLISH,並希望它在整個應用程序生命周期中保持“PUBLISH”。 誰能幫我這個。

您應該為此使用react-query ,因為那是服務器 state 並且不應保存到 redux,它應該僅用於客戶端 state。

您所有返回數據的 api 調用都將包裝在useQuery 掛鈎中,該掛鈎將自動重新獲取、緩存、同步並保持 state 處於最新狀態。 如果需要相同的數據,它還可以防止多個 api 調用。

要顯示加載 state,useQuery 返回一個狀態,該狀態可用於顯示該查詢的本地加載 state,或者您可以使用useIsFetching掛鈎來顯示當前是否正在獲取任何查詢。

這將在組件生命周期中持續存在,因此導航也適用。

要使用數據調用端點來更改某些內容,請使用 useMutation 掛鈎:

const [publishSample , { status, error }] = useMutation(this.Service.publish)

 {status === 'loading'? (
       <div>{ENUM.PUBLISH}</div>
        ) : (
         <div>
           <p> {ENUM.CREATE}</p>
         </div>
      )}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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