【讨论帖】关于mobx全局store与autorun的问题

在最近的一个项目里,用了mobx。observer这个函数真的解放了大量的性能优化的工作,而且mobx不需要过多的胶水代码,写起来十分爽。

然而官方文档和大部分用法都是把一个store放在context里,再透给组件。虽然这个很符合react的思想(通过context使得组件之间共享数据)。但明明store可以直接作为一个全局单例被任意组件文件import进来使用,把它放在context里不是显得很多余么?一直很不明白这样操作的目的,也终于找到了和我一样疑问的人https://stackoverflow.com/que... 以及 https://github.com/mobxjs/mob...。高赞回答给我目前用的这种方式找到了与之类似的设计模式——服务器定位模式:https://www.runoob.com/design...。最后结合两篇讨论的高赞,结论是不用全局的模式会更易于组件测试

另一个问题则是autorun(reaction)与useEffect过于类似,两者怎么在react应用中协调使用?https://stackoverflow.com/que...。但这个问题也没有什么高质量的回答。我的用法则是在store创立好之后,就立刻开始执行一系列的autorun和reaction,并在适时清除他们。

我认为我采用的全局store和直接执行autorun,做到了将大部分逻辑从视图中抽离出来,每一个组件都非常干净小巧,仅有一些与自身视图控制相关的state、effect。没有使用context也是因为这种用法让我很困惑,感觉一直在做多余的事情。

回复
阅读 1.1k
1 个回答
推荐问题
宣传栏