import React, { useEffect, useState } from 'react'; import { Row, Col, Button } from 'antd'; import { CaretRightOutlined, PauseOutlined } from '@ant-design/icons'; import styles from '../../ui.module.less'; import { TaskState } from '../../../server/core/enums'; import { getTerminalRefIns, setTerminalRefIns } from '../../util'; import { TaskComponentProps } from '../index'; import { useInit } from '../../hooks'; const LintComponent: React.FC = ({ taskType, namespace, api, detail = {}, dispatch, iife, Terminal, }) => { const { intl } = api; const [log, setLog] = useState(''); const [init] = useInit(detail); useEffect( () => { if (!init) { return () => {}; } dispatch({ type: `${namespace}/getTaskDetail`, payload: { taskType, callback: ({ log }) => { setLog(log); }, }, }); if (iife) { lint(); } return () => { const terminal = getTerminalRefIns(taskType, api.currentProject.key); if (terminal) { terminal.clear(); } }; }, [init, iife], ); async function lint() { dispatch({ type: `${namespace}/exec`, payload: { taskType, }, }); } async function cancelLint() { dispatch({ type: `${namespace}/cancel`, payload: { taskType, }, }); } const isTaskRunning = detail && detail.state === TaskState.ING; return ( <>

{intl({ id: 'org.umi.ui.tasks.lint' })}

<> {/* 输出 */}
{ if (ins) { setTerminalRefIns(taskType, api.currentProject.key, ins); } }} /> )}
); }; export default LintComponent;