我可以在 React 中使用 MobX 完全摆脱 useCallback 和 useMemo 吗?
Can I totally get rid of useCallback and useMemo with MobX in React?
目前,我正在使用 Redux 和上面提到的钩子来进行 React 项目。但是,在我看来,useMemo
和 useCallback
会很快导致错误(棘手的错误)。据我了解,需要这些挂钩来避免不必要的组件重新渲染,因为 React 正在检查引用相等性。
我想摆脱上面提到的钩子,让 MobX 处理所有响应式的东西。我想知道我是否可以完全摆脱它们 (useCallback
, useMemo
),因此一切都会自动更新。
- MobX 的性能是否较慢?
- 是否有可能使用 MobX 完全摆脱它们?
- UI 组件是否也只能在 MobX 上中继(例如,设置加载布尔值或用于切换模式可见性的布尔值)?
另外,我读到useContext
不应该用于高频更新。不过,MobX 确实经常和 hook 一起使用(说的mobx-react-lite
)。那么使用 MobX 进行 UI 更新是个好主意吗?
首先你并不真的需要那些钩子。
useMemo - 用于懒惰值,如果您决定放弃它并简单地获取您的值,则不会发生任何事情。
useCallback - 就像函数的 useMemo 一样,你可以声明一个函数而不用将它包装在 useCallback 函数中。
来自 React useMemo and useCallback
You may rely on useMemo as a performance optimization, not as a semantic guarantee.
useCallback(fn, deps) is equivalent to useMemo(() => fn, deps).
对于 99% 的情况,这些钩子用于优化,它们与 MobX 或 Redux 无关,你可以简单地不使用它们。
除非你有一个非常具体的用例,Whosebug 中的其他问题建议你使用它们。
我个人讨厌 redux,一开始听起来不错,但你会意识到持续维护它是一个巨大的怪物。
MobX 采用另一种方法来管理您的应用程序的全局状态,一开始听起来也不错,但随后您会深入研究并通过调整 useState 来触发 forceRender 并使用一些带有可观察包装函数组件的巫术来查看实现。
这就是为什么我最近创建了一个简单的 React 状态管理包,在我看来,它太简单了,难以理解维护和扩展(我在几个大型应用程序中使用了这种模式)
叫做react-spear。
我非常希望听到任何关于它的想法,我认为这种方法使全局状态管理变得非常容易。
目前,我正在使用 Redux 和上面提到的钩子来进行 React 项目。但是,在我看来,useMemo
和 useCallback
会很快导致错误(棘手的错误)。据我了解,需要这些挂钩来避免不必要的组件重新渲染,因为 React 正在检查引用相等性。
我想摆脱上面提到的钩子,让 MobX 处理所有响应式的东西。我想知道我是否可以完全摆脱它们 (useCallback
, useMemo
),因此一切都会自动更新。
- MobX 的性能是否较慢?
- 是否有可能使用 MobX 完全摆脱它们?
- UI 组件是否也只能在 MobX 上中继(例如,设置加载布尔值或用于切换模式可见性的布尔值)?
另外,我读到useContext
不应该用于高频更新。不过,MobX 确实经常和 hook 一起使用(说的mobx-react-lite
)。那么使用 MobX 进行 UI 更新是个好主意吗?
首先你并不真的需要那些钩子。
useMemo - 用于懒惰值,如果您决定放弃它并简单地获取您的值,则不会发生任何事情。
useCallback - 就像函数的 useMemo 一样,你可以声明一个函数而不用将它包装在 useCallback 函数中。
来自 React useMemo and useCallback
You may rely on useMemo as a performance optimization, not as a semantic guarantee.
useCallback(fn, deps) is equivalent to useMemo(() => fn, deps).
对于 99% 的情况,这些钩子用于优化,它们与 MobX 或 Redux 无关,你可以简单地不使用它们。 除非你有一个非常具体的用例,Whosebug 中的其他问题建议你使用它们。
我个人讨厌 redux,一开始听起来不错,但你会意识到持续维护它是一个巨大的怪物。
MobX 采用另一种方法来管理您的应用程序的全局状态,一开始听起来也不错,但随后您会深入研究并通过调整 useState 来触发 forceRender 并使用一些带有可观察包装函数组件的巫术来查看实现。
这就是为什么我最近创建了一个简单的 React 状态管理包,在我看来,它太简单了,难以理解维护和扩展(我在几个大型应用程序中使用了这种模式)
叫做react-spear。
我非常希望听到任何关于它的想法,我认为这种方法使全局状态管理变得非常容易。