【问题标题】:Iterating <a> & Typescript optimization迭代 <a> 和 Typescript 优化
【发布时间】:2020-04-26 05:36:33
【问题描述】:

一段代码 - 我意识到:

  • 可以通过循环优化 div 中的内容
  • 打字稿不一定正确

有人可以在重构方面提供高级帮助吗?


type Status =
  | "no-status"
  | "active"
  | "hold"
  | "close"

  interface IState {
    status: Status;
  }

const Main: React.FC = ()=>{
    const [status, setStatus] = useState<IState>("no-status");
    return(
        <div>                
           <a href='#'  onClick={()=>setStatus("active")} >Active </a> 
           <a href='#' onClick={()=>setStatus("hold")} >Idle </a>
           <a href='#' onClick={()=>setStatus("close")}>Close </a>           
      </div>     
    );
};

【问题讨论】:

    标签: reactjs typescript


    【解决方案1】:

    您将您的状态定义为与 KEY 状态的接口...

    type Status =
      | "no-status"
      | "active"
      | "hold"
      | "close"
    
      interface IState {
        status: Status;
      }
    
    const Main: React.FC = ()=>{
        const [status, setStatus] = useState<IState>({status: 'no-status'});
        return(
            <div>                
               <a href='#'  onClick={()=>setStatus({status: 'active'})} >Active </a> 
               <a href='#' onClick={()=>setStatus({status: 'hold'})} >Idle </a>
               <a href='#' onClick={()=>setStatus({status: 'close'})}>Close </a>           
          </div>     
        );
    };
    

    编辑:

    const iterateStatus: Status[] = ['active', 'hold', 'close'];
    const Main: React.FC = ()=>{
        const [status, setStatus] = useState<IState>({status: 'no-status'});
        return (
          <div>
            {iterateStatus.map((status) => (
              <a href="#" onClick={() => setStatus({ status: status })}>{status}</a>
            ))}
          </div>
        );
    };
    

    【讨论】:

    • 是的,我知道这不是好习惯,所以我创建了这张票以寻求帮助;/
    • 我不确定迭代 a 是什么意思?我编辑了代码,但不确定你在找什么
    • 好的,现在已经很不错了。谢谢 - 为什么 Status 有 [] ? useState 不显示来自 IState 以外的继承?
    • 你的意思是:const iterateStatus: Status[]...这是数组类型的状态
    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 2010-10-22
    • 2021-07-25
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多