packages-fetcher/console-fetcher-interceptor-req-mock/stories/demo-one/index.tsx (88 lines of code) (raw):

import React, { useState, useCallback } from 'react'; import { P, Button, PrePromise } from '@alicloud/demo-rc-elements'; import ThemeSwitcher from '@alicloud/console-base-demo-helper-theme-switcher'; import PkgInfo from '../pkg-info'; import { fetcher1 } from '../fetcher'; function callOpenApi(): Promise<unknown> { return fetcher1.post('/data/api.json', { product: 'ram', action: 'ListAccessKeys' }); } function callInnerApi(): Promise<unknown> { return fetcher1.post('/data/innerApi.json', { product: 'ram', action: 'ListGroups' }); } function callContainerApi(): Promise<unknown> { return fetcher1.post('/data/call.json', { product: 'ram', action: 'ListRoles' }); } function callMultiOpenApi(): Promise<unknown> { return fetcher1.post('/data/multiApi.json', { product: 'ram', actions: JSON.stringify([{ action: 'ListAccessKeys' }, { action: 'ListGroups' }, { action: 'ListRoles' }]) }); } function callMultiInnerApi(): Promise<unknown> { return fetcher1.post('/data/multiInnerApi.json', { product: 'ram', actions: JSON.stringify([{ action: 'ListAccessKeys' }, { action: 'ListGroups' }, { action: 'ListRoles' }]) }); } function callMultiContainerApi(): Promise<unknown> { return fetcher1.post('/data/multiCall.json', { product: 'ram', actions: JSON.stringify([{ action: 'ListAccessKeys' }, { action: 'ListGroups' }, { action: 'ListRoles' }]) }); } export default function DemoOne(): JSX.Element { const [statePromise, setStatePromise] = useState<Promise<unknown> | null>(null); const handleCallOpenApi = useCallback(() => setStatePromise(callOpenApi()), [setStatePromise]); const handleCallInnerApi = useCallback(() => setStatePromise(callInnerApi()), [setStatePromise]); const handleCallContainerApi = useCallback(() => setStatePromise(callContainerApi()), [setStatePromise]); const handleCallMultiOpenApi = useCallback(() => setStatePromise(callMultiOpenApi()), [setStatePromise]); const handleCallMultiInnerApi = useCallback(() => setStatePromise(callMultiInnerApi()), [setStatePromise]); const handleCallMultiContainerApi = useCallback(() => setStatePromise(callMultiContainerApi()), [setStatePromise]); return <> <ThemeSwitcher /> <PkgInfo /> <P>请看 console</P> <Button onClick={handleCallOpenApi}>callOpenApi</Button> <Button onClick={handleCallInnerApi}>callInnerApi</Button> <Button onClick={handleCallContainerApi}>callContainerApi</Button> <Button onClick={handleCallMultiOpenApi}>callMultiOpenApi</Button> <Button onClick={handleCallMultiInnerApi}>callMultiInnerApi</Button> <Button onClick={handleCallMultiContainerApi}>callMultiContainerApi</Button> <PrePromise promise={statePromise} /> </>; }