/* * @Description: 执行结果 * @Author: tangjiang * @Github: * @Date: 2019-11-28 08:44:54 * @LastEditors: tangjiang * @LastEditTime: 2019-12-19 10:44:16 */ import './index.scss'; import React, { useState, useEffect } from 'react'; import { Icon } from 'antd'; import CONST from '../../../../constants'; const {reviewResult} = CONST; function ExecResult (props) { const { excuteState, excuteDetail } = props; // console.log('执行状态: ======', excuteState); // 指定渲染初始, 加载中, 加载完成页面内容 const renderInit = () => (
请填写测试用例的输入值,点击“调试代码”
); const renderLoading = () => (
加载中...
); const readerLoaded = () => (
加载完成
); const renderError = () => (
未知异常
) const renderFinish = () => { const { error_line, error_msg, execute_memory, execute_time, input, output, status, expected_output } = codeResult; const excuteHeader = (state) => { const review_class = state === 0 ? `excute_suc` : `excute_err`; return (

执行结果: {reviewResult[`${state}`]}

) } // console.log('执行结果====》》》》', status); const excuteCtx = (state) => { if (state === 0) { return (

输入: {input}

输出: {output}

执行用时: {`${execute_time}s`}

); } else if (state === 4){ return (

{error_msg}

) } else if (state === -1) { return (

输入: {input}

输出: {output}

预期输出: {expected_output}

) } else if (state === 5) { return (

执行出错信息: {error_msg}

最后执行的输入: {input}

) } } return (
{excuteHeader(status)} {excuteCtx(status)}
); }; // 渲染状态 const [renderCtx, setRenderCtx] = useState(() => { return function () { return renderInit(); } }); // 提交记录详情 const [codeResult, setCodeResult] = useState({}) // 渲染状态变化时渲染相应的内容 useEffect(() => { // console.log('执行状态====》》》》', excuteState); if ('loading' === excuteState) { setRenderCtx(() => (renderLoading)); } else if ('loaded' === excuteState) { setRenderCtx(() => (readerLoaded)); } else if ('finish' === excuteState) { setRenderCtx(() => (renderFinish)); } else if ('error' === excuteState) { setRenderCtx(() => (renderError)) } }, [excuteState]); // 提交详情变化时 useEffect(() => { // console.log('提交记录详情=====>>>>>', excuteDetail); setCodeResult(excuteDetail); }, [excuteDetail]); return ( {renderCtx()} ) } export default ExecResult;