目前,我正在为react项目使用Redux和上面提到的钩子。然而,在我看来,useMemo
和useCallback
可以很快导致错误(棘手的错误(。据我所知,这些钩子是为了避免不必要的组件重新呈现而必需的,因为react是检查引用相等性。
我想摆脱上面提到的钩子,让MobX处理所有的反应性东西。我想知道我是否可以完全摆脱它们(useCallback
,useMemo
(,因此一切都会自动更新。
- MobX是否具有较慢的性能
- 有没有可能用MobX彻底摆脱它们
- UI组件是否也只能在MobX上中继(例如,设置加载布尔值或布尔值以切换模式可见性(
此外,我读到useContext
不应用于高频率更新。然而,MobX确实经常与钩子一起使用(谈论mobx-react-lite
(。那么,使用MobX进行UI更新是个好主意吗?
首先,您并不真正需要这些钩子。
-
useMemo-表示懒惰的价值,如果你决定放弃它,只获得你的价值,什么都不会发生。
-
useCallback-类似于函数的useMemo,您可以声明一个函数,而无需将其封装在useCallback函数中。
来自React useMemo和useCallback
您可能将useMemo作为性能优化,而不是语义保证
useCallback(fn,deps(等价于useMemo(((=>fn,deps(。
99%的情况下,这些挂钩用于优化,它们与MobX或Redux无关,您可以简单地不使用它们。除非您有一个非常具体的用例,StackOverflow中的其他问题建议您使用它们。
我个人讨厌redux,它一开始听起来不错,但比你意识到的要持续维护它是一个大怪物。
MobX采用了另一种方法来管理应用程序的全局状态,这在一开始听起来也很好,但后来你深入研究,通过调整useState来触发forceRender并使用一些带有可观察包装器功能组件的voodoo来查看实现。
这就是为什么我最近创建了一个简单的反应状态管理包,在我看来,它太简单了,无法理解维护和扩展(我在几个大型应用程序中使用了这种模式(
它被称为反应矛。
我真的很想听听你的想法,我认为这种方法让全球国家管理变得非常容易。