美文网首页
怎么在react里写ts

怎么在react里写ts

作者: 邵志远 | 来源:发表于2019-04-23 14:59 被阅读0次

    这篇文章将简单的演示怎么在react中加上ts,从一个简单的icon组件说起。普通react环境下是这样的。
    icon.tsx

    import React from 'react';
    const Icon = ({ name, ...restProps}) => {
        return (
            <svg {...restProps}>
                <use xlinkHref={`#${name}`}/>
            </svg>
        );
    };
    export default Icon;
    

    index.tsx

    import * as React from 'react';
    import ReactDom from 'react-dom';
    import Icon from './icon/icon';
    
    const fn =  (e) => {
      console.log((e))
    };
    
    ReactDom.render(
      <Icon name='wechat'/>, 
      document.getElementById('root')
    );
    

    然后对传入的name进行类型确定
    icon.tsx

    import React from 'react';
    
    interface IconProps{
       name: string;
    }
    
     const Icon: React.FunctionComponent<IconProps>  // React.FunctionComponent为对icon组件的类型测试,后面是传入的值的类型
    =({ name, ...restProps})=> {
        return (
            <svg {...restProps}>
                <use xlinkHref={`#${name}`}/>
            </svg>
        );
    };
    
    export default Icon;
    

    当然在传值的过程不只传个静态数据,还可能会传个事件,事件的类型判断和静态数据的不一样, 事件的类型判断如下

    interface IconProps extends React.SVGAttributes<SVGElement> {
        name: string;
        onClick: React.MouseEventHandler<SVGElement>
    }
    

    当然,传入的事件也需要进行一下类型判断

    const fn: React.MouseEventHandler<SVGAElement | SVGUseElement> = (e) => {
      console.log((e.target as HTMLDivElement))
    };
    

    一个简单的ts+react例子就写好了。

    相关文章

      网友评论

          本文标题:怎么在react里写ts

          本文链接:https://www.haomeiwen.com/subject/xlomgqtx.html