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不错。改进了一点:(?)?。