javascript - 当 React JS 被压缩以用于生产时,如何剥离测试代码?
问题描述
在我的 React 功能组件中,我曾经useEffect
做一些调试日志记录,但我只在非--production
构建中运行时才需要它。
// something like
if (process.env.NODE_ENV !== 'production') {
// I want the contents of this block removed on production builds, but it is inside a function
useEffect(() => {
console.log("authState changed", AuthStates[authState]);
}, [authState]);
useEffect(() => {
console.log("authToken changed", authToken);
if (tokenExpiresOn) {
console.log(
`token expires in ${(tokenExpiresOn - Date.now()).toLocaleString()}ms`
);
}
}, [authToken]);
useEffect(() => {
if (tokenExpiresOn) {
console.log(
`token expires in ${(tokenExpiresOn - Date.now()).toLocaleString()}ms`
);
} else {
console.log("tokenExpiresOn cleared");
}
}, [tokenExpiresOn]);
}
解决方案
您不能有条件地声明挂钩。你可以在顶层声明,你可以把你的业务逻辑放在钩子里,例如下面。
useEffect(() => {
if (process.env.NODE_ENV !== 'production'){
console.log("authToken changed", authToken);
if (tokenExpiresOn) {
console.log(
`token expires in ${(tokenExpiresOn - Date.now()).toLocaleString()}ms`
);
}
}
}, [authToken]);
推荐阅读
- cmake - 如何正确地将存储在磁盘上的第三方项目包含到我的 cmake 项目中?
- f# - F# 以及如何使用泛型
- c++ - C++ 应用程序仅在使用本地 Windows 调试器时运行,而不是在哪个 exe 文件中运行
- django - 如何调试 gunicorn [6383] [CRITICAL] 工作人员超时?
- javascript - 无法读取未定义的属性“rollupVersion”或如何使用 rollup 和 babel 设置 gulp
- javascript - 通过jquery调用对象函数
- excel - 在 Excel VBA 中将对象添加到集合时遇到问题
- react-native - 需要按 flatlist child 2/3 秒才能实际移动到链接
- webhooks - 是否有任何 webhook 可用于了解用户是否可以使用 google Filt 新数据?
- jenkins - 詹金斯管道蝙蝠多行