taro-hooks
taro-hooks copied to clipboard
为什么useEnv中的setEnv要在useEffect中触发?
Question
理论上来说TARO_ENV 在运行的时候就已经确定了环境,但是看useEnv源码的setter却是在useEffect中触发,是否有什么特殊的case要处理,需要这么做?
如果确定是不可变的,那么用useRef来存性能会更好,一些情况下可以少触发一次render。
function useEnv(): ENV {
return useRef(getEnv()).current
}
确实是的。下个版本的这种固定信息类的接口会直接产出。可以等待一下下个版本。
那改的东西不少,我看很多hooks里面都依赖了useEnv
因为之前跨端都是用env来判断的. 下个版本会走file的模式. xxx.${env}.ts. 这样会减少大部分的env使用
这里要注意⚠️一个问题,就是支持扩展的编译平台,Taro已经支持的几种平台可以走xxx.${env}.ts
条件编译,但是第三方自己fork的编译平台,建议留个xxx.ts
作为兜底,还是拿getEnv()的值。举个不恰当的例子,比如说鸿蒙,Taro还没发布正式版,就可以走兜底的逻辑,让用户可以正常使用,不至于报错。
=。- 只要是不带平台后缀的最后都会兜底会xx.ts. 不过这次更新要限制taro.version >= 330了
新版本已经发布. 暂未宣发. 可以开始尝鲜了 传送门