packages-rc/console-base-rc-dialog/stories/demo-special/dynamic/index.tsx (80 lines of code) (raw):

/* eslint-disable no-console */ import React, { useCallback } from 'react'; import { H1, Button } from '@alicloud/demo-rc-elements'; import { DialogProps, DialogSize, open, slide, slideUp } from '../../../src'; import Content from './content'; function onResolve(resolved: any): void { console.info('[RESOLVED]', resolved); } function onReject(rejected: any): void { console.info('[REJECTED]', rejected); } const props: DialogProps = { title: ({ input1, input2 }): string => { if (input1 && input2) { return '输入了 input1 和 input2'; } if (input1) { return '输入了 input1'; } if (input2) { return '输入了 input2'; } return '演示利用共享 data 对 title、button 进行微调的骚操作'; }, content: <Content />, buttons: ({ input1, input2 }) => { return [{ label: 'input #1 + #2', disabled: !input1 || !input2 }, { label: 'input #1', disabled: !input1 }, { label: 'input #2', disabled: !input2 }, { label: 'cancel' }]; }, size: DialogSize.L }; export default function Dynamic(): JSX.Element { const handleTestOpen = useCallback(() => { open(props).then(onResolve, onReject); }, []); const handleTestSlide = useCallback(() => { slide(props).then(onResolve, onReject); }, []); const handleTestSlideUp = useCallback(() => { slideUp(props).then(onResolve, onReject); }, []); return <> <H1>动态修改内容等</H1> <Button {...{ onClick: handleTestOpen }}>open</Button> <Button {...{ onClick: handleTestSlide }}>slide</Button> <Button {...{ onClick: handleTestSlideUp }}>slideUp</Button> </>; }