MobX中useLocalObservable是否会将getter转为computed值?
useLocalObservable 中的 getter 是否会被转为 MobX computed 值?
我注意到useLocalObservable会像makeAutoObservable处理类一样,自动将函数转换为MobX的actions。那么它是否也会将getter转换为MobX的computed值?
代码示例:
import { useLocalObservable } from 'mobx-react-lite'; const state = useLocalObservable(() => ({ isShowDragMeTooltip: false, showDragMeTooltip() { this.isShowDragMeTooltip = true; }, hideDragMeTooltip() { this.isShowDragMeTooltip = false; }, get dragMeTooltipStyles() { return { display: this.isShowDragMeTooltip ? 'block' : 'none', }; } }));
回答
是的,useLocalObservable内部基于makeAutoObservable实现,所以你代码里的dragMeTooltipStyles会被自动识别为computed值,具备MobX computed的缓存特性:只有当它依赖的isShowDragMeTooltip发生变化时,才会重新计算;重复调用时如果依赖没变化,会直接返回缓存结果,不会每次都执行函数体。
内容的提问来源于stack exchange,提问作者Evan Summers
相关产品推荐
相关产品推荐

