rax
rax copied to clipboard
[BUG] useEffect 中执行函数存在时序问题
下面代码会 return 后会执行 alert(1)。
useEffect(() => {
if (1) return;
const timer = setInterval(() => {
alert(1)
clearInterval(timer);
}, 1000);
}, [])
- Device: MacBook Pro
- OS: MacOS
- Browser: Chrome
- Rax Version: ^1.1.0
https://github.com/raxjs/rax-app/blob/3eebae97cc680f64485e88c9d2565a37aebe013b/packages/rax-babel-config/src/index.js#L65
直接原因是 babel-plugin-minify-dead-code-elimination-while-loop-fixed 这个 babel 插件引起的,if (1) return;
被移除掉了,但是后面的 const timer = ...
没有移除
复现地址:Babel REPL
babel issue 地址:https://github.com/babel/minify/issues/1020
修复 PR:https://github.com/kingback/babel-plugin-minify-dead-code-elimination-while-loop-fixed/pull/1
这个 babel 插件未来应该可以干掉了
这个 pr 提到 raxjs 下对应的仓库吧
这个 pr 提到 raxjs 下对应的仓库吧
https://github.com/raxjs/babel-plugin-minify-dead-code-elimination-while-loop-fixed/pull/1 done~