import React, { useState, useMemo } from 'react'; import { Button, Collapse, Select, Col, Form, Input } from 'antd'; import { useCallback } from 'react'; import './index.css'; import { useEffect } from 'react'; import { FormProps } from 'antd/lib/form/Form' const { TextArea } = Input; const { Panel } = Collapse; interface IPageProps extends FormProps { canvasData?: any onFormValueChange?: any onEventValueChange?: any } const Page = ({ onEventValueChange, canvasData }) => { const [form] = Form.useForm() const [eventData, setEventData] = useState(canvasData.node.events); useEffect(() => { setEventData(canvasData.node.events); }, [canvasData]) /** * 新增事件 */ const onHandleAddEventListener = () => { const arr = [...eventData]; arr.push({ type: '0', action: '0' }); setEventData(arr); }; const onHandleEventTypeChange = (e, idx) => { const data = [...eventData]; data[idx].type = e; // resetFields(); setEventData(data); }; const onHandleSelectEvent = (e, idx) => { const data = [...eventData]; data[idx].action = e; // resetFields(); setEventData(data); }; /** * 渲染自定义事件表单入口 */ // eslint-disable-next-line react-hooks/exhaustive-deps const renderFontForm = (item, idx) => { return (
{renderFormByEventType(item, idx)}
); }; /** * 根据事件类型渲染事件行为表单 */ const renderFormByEventType = (item, idx) => { const renderCommonForm = () => { return ( {renderFormByEvent(item, idx)} ); }; switch (item.type) { case '0': case '1': return renderCommonForm(); case '2': return ( { } {renderCommonForm()} ); case '3': return ( {renderCommonForm()} ); default: break; } }; /** * 根据事件行为生成不同的表单 */ const renderFormByEvent = (item, idx) => { switch (item.action) { case '0': return ( onHandleCodeChange(e, idx)} /> ); case '2': return (