【问题标题】:How to refresh a React/TS page after a POST request?如何在 POST 请求后刷新 React/TS 页面?
【发布时间】:2023-01-26 20:26:24
【问题描述】:

我正在为 Backstage 开发一个插件,它通过 API 在 Argo CD 上执行检查。

  1. GET 请求以收集有关应用程序的信息 https://argocd.acme.com/api/v1/applications/${app-name}

  2. 如果 status.sync.status 是“OutOfSync”,我会呈现一个按钮,允许执行 POST 请求以更新状态 https://argocd.acme.com/api/v1/applications/${app -name}/sync

  3. (我需要帮助的是):POST请求完成后,我想刷新整个组件页面(再次执行初始GET)


    这是我负责 POST 请求的组件的代码:

    import React from 'react';
    import { useApi } from '@backstage/core-plugin-api';
    import { useEntity } from '@backstage/plugin-catalog-react';
    import { Button } from '@material-ui/core';
    import { argoCDApiRef } from '../../api';
    import Alert from '@material-ui/lab/Alert';
    
    export const SyncFetchComponent = () => {
        const apiClient = useApi(argoCDApiRef);
        const { entity } = useEntity();
        
        async function PostSyncStatus() {
            const response = await apiClient.updataSyncStatus(`${entity.metadata.name}`);
            
            if(response.status !== 200) {
                return <Alert severity='error'>Error at Sync Proccess</Alert>;
            };
    
            return response;
        };
     
        return (
            <Button onClick={PostSyncStatus}>
                Sync App
            </Button>
        );
    };
    

【问题讨论】:

  • 尝试使用 onSubmit 而不是 onClick。您还可以在 PostSyncStatus 函数中使用 window.location.reload()

标签: reactjs typescript backstage


【解决方案1】:

请求完成后使用window.location.reload()

async function PostSyncStatus() {
  const response = await apiClient.updataSyncStatus(`${entity.metadata.name}`);

  if (response.status !== 200) {
    return <Alert severity='error'>Error at Sync Proccess</Alert>;
  } else {
    window.location.reload();
  }

  return response;
};

【讨论】:

  • 这没有效果。这个按钮在另一个文件中被调用。我不能说这是否会直接影响(我对 React 很糟糕''/)
【解决方案2】:

您可以使用

window.location.reload(false);

或更新您要更新的组件的状态

【讨论】:

    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 2021-04-09
    • 2013-12-12
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2018-09-27
    相关资源
    最近更新 更多