ts 新手问个问题,我最近在用 tailwind + react + ts 写项目,当一个 component 的 classname 太长的时候我想把它分离出来 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX    Node.js

ts 新手问个问题,我最近在用 tailwind + react + ts 写项目,当一个 component 的 classname 太长的时候我想把它分离出来

  •  
  •   ChrisFreeMan 2023-03-21 11:59:33 +08:00 3329 次点击
    这是一个创建于 936 天前的主题,其中的信息可能已经有所发展或是发生改变。
    但是我想保留 tailwind lsp 插件的自动提示功能,我该怎么声明一个 ts 的 className 类型让它能像在 component 中一样自动提示 tailwind 的类名呢。
    13 条回复    2023-03-25 15:40:31 +08:00
    joesonw
        1
    joesonw  
       2023-03-21 12:28:38 +08:00 via iPhone
    用 css modules ,在 scss 里使用 tailwind 。
    nomagick
        2
    nomagick  
       2023-03-21 12:30:17 +08:00
    别用 tailwind ,有毒,class 来就不该承载这种规模的复杂度。
    ChrisFreeMan
        3
    ChrisFreeMan  
    OP
       2023-03-21 12:56:56 +08:00
    @joesonw
    @nomagick 感谢两位的回复,但这不是我要的答案,我明白我在做什么,所以完全是个人编程习惯的问题。
    Whatk
        4
    Whatk  
       2023-03-21 13:10:14 +08:00
    首选项 - 设置 - Tailwind CSS: Class Attributes
    ChrisFreeMan
        5
    ChrisFreeMan  
    OP
       2023-03-21 13:22:48 +08:00
    @Whatk 感谢线索,解决了,我的设置是
    {
    "tailwindCSS.classAttributes": [
    "class",
    "className",
    "ngClass",
    "HTMLAttributes<HTMLDivElement>"
    ]
    }

    如果有错误欢迎各位大佬指出
    sparkle2015
        6
    sparkle2015  
       2023-03-21 13:41:19 +08:00
    是什么编辑器? 我在 VS Code 里没搜到这个插件的名称。

    我自己是在 VS Code 里安插的 tailwind 官方的 Tailwind CSS IntelliSense 插件,直接把 className 声明成 string 就行了,本来 className 就是字符串。

    示例代码如下,当我在 TestComp 的 className 中输入 m-a 的时候就自动出现了 m-auto 的提示。(截图不知道该怎么贴)

    ```
    const TestComp: React.FC<{ className: string }> = ({ className }) => {
    return <div className={className} />
    }

    const TestPage: React.FC = () => {
    return (
    <div className='w-96 m-auto'>
    <h1 className='text-center'>Test Page</h1>
    <TestComp className='w-10 m-a...'/>

    </div>
    )
    }
    ```
    ChrisFreeMan
        7
    ChrisFreeMan  
    OP
       2023-03-21 14:04:52 +08:00
    @sparkle2015 我搞错了,之前不知道怎么回事应该是抽风了,这么设置还不行,这个应该只是设置标签属性提示名称的 /
    ChrisFreeMan
        8
    ChrisFreeMan  
    OP
       2023-03-21 14:05:15 +08:00
    我回头再研究一下
    ChrisFreeMan
        9
    ChrisFreeMan  
    OP
       2023-03-21 14:08:16 +08:00
    @sparkle2015 我用的是 lunarvim
    TunkShif
        10
    TunkShif  
       2023-03-21 20:39:19 +08:00   3
    这个跟 TypeScript 的关系其实不大,Tailwind 的 LSP 可以支持根据正则来匹配要启用 Tailwind IntelliSense 的代码区域,详细可以参考 twin.macro 这个项目的 issue 来自己设置:
    https://github.com/ben-rogerson/twin.macro/discussions/227

    对于 OP 这种类似的需求,我个人的设置是像下图这样的:
    https://imgur.com/5FRvbFU

    在 Tailwind 的样式类的字符串前加一个 /* tw */ 的注释来标记启用 Tailwind IntelliSense ,相关的配置如下:

    ```json
    {
    "tailwindCSS.experimental.classRegex": [
    "\\/\\* tw \\*\\/\\s+`([^`]*)"
    ]
    }
    ```
    ChrisFreeMan
        11
    ChrisFreeMan  
    OP
       2023-03-21 21:50:11 +08:00
    @TunkShif 试了一下,太感谢了朋友,这目前应该是最优解了。
    ChrisFreeMan
        12
    ChrisFreeMan  
    OP
       2023-03-21 21:53:03 +08:00
    顺便贴个图


    终于可以满足纯 ts 开发的变态梦了。
    xling
        13
    xling  
       2023-03-25 15:40:31 +08:00
    tailwind 挺好用的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2604 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:16 PVG 13:16 LAX 22:16 JFK 01:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86