Javascript 使用VSCode将常量重构为惰性常量

Javascript 使用VSCode将常量重构为惰性常量,javascript,visual-studio-code,Javascript,Visual Studio Code,我继承了这个代码 // utils/isMobileView.js const isMobileView = window.innerWidth < 500; export default isMobileView; // somewhere else import isMobileView from 'utils/isMobileView'; // ... if (isMobileView) renderMobile() else renderDesktop() //utils/is

我继承了这个代码

// utils/isMobileView.js
const isMobileView = window.innerWidth < 500;
export default isMobileView;

// somewhere else
import isMobileView from 'utils/isMobileView';
// ...
if (isMobileView) renderMobile()
else renderDesktop()
//utils/isMobileView.js
const isMobileView=窗口。内部宽度<500;
导出默认isMobileView;
//其他地方
从“utils/isMobileView”导入isMobileView;
// ...
if(isMobileView)renderMobile()
else renderDesktop()
问题是显而易见的。页面加载时,真实性只评估一次

我想将其重构为一个求值函数:

// utils/isMobileView.js
const isMobileView = () => window.innerWidth < 500;
export default isMobileView;

// somewhere else
import isMobileView from 'utils/isMobileView';
// ...
if (isMobileView()) renderMobile()
else renderDesktop()
//utils/isMobileView.js
const isMobileView=()=>window.innerWidth<500;
导出默认isMobileView;
//其他地方
从“utils/isMobileView”导入isMobileView;
// ...
if(isMobileView())renderMobile()
else renderDesktop()
有没有一种方法可以自动利用VSCode惊人的功能


请注意,这个问题不是关于使用正则表达式,而是关于重构VSCode或扩展的原生函数。

ctrl+shift+p
搜索:在文件中查找,然后查找
isMobileView
并替换为
isMobileView()

显然还没有这样的功能,因此,如果出于任何原因,regex不是一个选项,那么可以在VSCode中使用出色的find/replace面板,并逐个手动应用(replace)或取消结果


Ctrl+F、
isMobileView
替换为
isMobileView()
。@MoshFeu VScode和visual studio不一定在同一位置记录。由于导入语句共享相同的文本,因此无法直接替换。另外,
isMobileView
不仅在
if(…)
语句中使用,还与三元和二元运算符一起使用,例如:
isMobileView&&otherCondition?true:false
不幸的是,这也将替换导入,因为文件名为
isMobileView.js
。我知道我可以使用正则表达式,但这超出了问题的范围。@Qwerty它似乎只在if语句中使用,因此您可以尝试查找
(isMobileView)
,而不是vscode,它不提供此功能,它的重构功能也不是那么聪明,不替换导入。我用“utils/isMobileView”中的导入isMobileView更新了我的问题,这就是简单替换无法工作的原因。它也被用作这个
isMobileView&&(something)
@Qwerty,在这种情况下,我会做两个替换
(isMobileView
isMobileView&
,是的,在第一个括号中我只会使用一个括号,如果这还不够,我担心没有比vscode更好的解决方案offer@JonasWilms不错。改进了一点:
(?)?。