使用RegExp查找具有特定属性的React组件

3qpi33ja  于 2023-08-08  发布在  React
关注(0)|答案(1)|浏览(113)

我试图找到一个完美的RegExp来找到具有特定属性的React组件。必须在IDE VSCode的搜索字段中使用RegExp。
组件示例:第一个月
属性示例:size

单行组件

如果组件的开始标签在一行上,我发现可以完美工作的RegExp是这样的(VSCode中不允许使用标志):
/<Button.+size/
例如,这将匹配到size的结尾:

<Button onClick={()=>{}} size='medium'>

字符串

多行组件

有时候,组件有太多的属性,以至于公司的代码风格会希望将其拆分为几行,每行一个属性,就像这样:

<Button
    type="button"
    size="tiny"
    className={styles.pauseButton}
    onClick={togglePaused}
    title="Pause or enable automatic loading of webhook requests in the debug console."
>


我无法编写一个RegExp来匹配这些特定的情况:
1.是否有一个单一的RegExp适用于这两种情况(并且不匹配其他任何东西)?
1.如果两种情况下都不存在一个RegExp,是否有一个RegExp只匹配开/闭括号之间具有特定prop的多行组件?

我所尝试的

我试过使用/<Button[\s\S]*?size[\s\S]*?>/,但它过度匹配了没有size属性的情况,所以它会一直匹配,直到在某处找到一个size字。
目前我使用/<Button[\n]/,它匹配所有且仅匹配拆分组件,然后我必须手动检查它们是否具有特定的属性。我仍然更喜欢RegExp,它只与特定属性的分割相匹配。
我也发现了这个nice answer,但是如果组件有其他属性,比如箭头函数和作为 prop 的组件,它就会崩溃。这可能是一个很好的基础,从tho开始。RegExp的答案是:<Component(\s|\n)[^>]*?property
可能是一些 lookaheads 的东西,但我没有足够的经验...
谢啦,谢啦

o8x7eapl

o8x7eapl1#

对于任何有同样问题并想要快速修复的人,这里有一个我发现适用于多行的RegExp。我在一个react代码中使用了这个。

<Button[ \w=\{\}>\(\)\n;".-:]* size

字符串
我用它来查找任何带有size属性的Button组件,它并不完美,但为我完成了这项工作。

相关问题