import { Component, isValidElement, ReactElement, ReactNode } from 'react'; import { Dialog, Search, Input } from '@alifd/next'; import { PluginProps } from '@ali/lowcode-types'; import './index.scss'; export default class EventBindDialog extends Component { private eventList: any[] = [ { name: 'getData', }, { name: 'deleteData', }, { name: 'initData', }, { name: 'editData', }, { name: 'submitData', }, ]; state: any = { visiable: false, selectedEventName: '', eventName: '', }; openDialog = (bindEventName: String) => { this.setState({ visiable: true, eventName: bindEventName, }); }; closeDialog = () => { this.setState({ visiable: false, }); }; componentDidMount() { const { editor, config } = this.props; editor.on(`${config.pluginKey}.openDialog`, (bindEventName: String) => { this.openDialog(bindEventName); }); } initEventName = () => { const { bindEventName } = this.state; let eventName = bindEventName; this.eventList.map((item) => { if (item.name === eventName) { eventName = `${eventName}_new`; } }); this.setState({ eventName, }); }; onInputChange = (eventName: String) => { this.setState({ eventName, }); }; onSelectItem = (eventName: String) => { this.setState({ selectedEventName: eventName, }); // 为空是新建事件 if (eventName === '') { this.initEventName(); } else { this.setState({ selectedEventName: eventName, eventName, }); } }; onSearchEvent = (searchEventName: String) => {}; onOk = () => { const { editor } = this.props; editor.emit('event-setter.bindEvent', this.state.eventName); // 选中的是新建事件 if (this.state.selectedEventName == '') { editor.emit('sourceEditor.addFunction', { functionName: this.state.eventName, }); } this.closeDialog(); }; render() { const { selectedEventName, eventName, visiable } = this.state; return (
事件选择
  • 内置函数
  • 组件事件
  • this.onSelectItem('')} > 新建事件
  • {this.eventList.map((item, index) => (
  • this.onSelectItem(item.name)} > {item.name}
  • ))}
事件名称
参数设置
); } }