reactjs - MobX 与 React 最佳实践与观察者
问题描述
我并没有真正面临问题,更像是我想知道我应该将 mobx 与 react 一起使用的最佳方式是什么。所以这是我的情况:
我是相当新的,mobx
但我有多年使用react
(主要是redux
)的经验。我的新项目mobx-state-tree
与 with 一起使用mobx-react-lite
,以便将我的组件与observer
包装组件的函数连接起来。我已经建立了一个根商店,里面有多个商店。我现在对此非常感兴趣,但我想要一些建议:
我是否应该使用在 redux 中非常常见的容器逻辑,这意味着我应该只连接一个“容器”组件,该组件将处理与我的商店的连接并将其传播给它的孩子?或者我应该直接与观察者连接,因为需要从商店提供数据的许多组件?
从技术上讲,第二个选项是否更优化?根据 React 哲学,它仍然是一个好主意吗?你对这个话题有什么看法?
任何答案将不胜感激
解决方案
从技术上讲,您不需要容器/表示概念。您可以使用 context、localStore 或 globalStore,但这并不意味着容器/演示有时没有用。
Mobx 修补shouldComponentUpdate
生命周期,基本上为您优化组件渲染。
mobx-react
在他们的文档中提到,与观察者连接的组件越多越好。
使用大量检查来避免不必要的渲染的 shouldComponentUpdate 是很常见的模式。MobX 根本不需要这样做。
我的观点是模式每月都会发生变化,因此学习一般概念可以简化您从全局存储、本地存储、上下文、挂钩和其他 api 更改的过渡。
React 组件模式也会随着时间而改变。
立即使用您需要和了解的内容。如果 5 年后无所谓,那就不要花超过 5 分钟的时间去想它。你总是可以做一个有趣的重构。
进一步阅读:
推荐阅读
- wordpress - 如果连接丢失,本地互联网连接监控和中继/ping 到网站
- python - 通过类,通过套接字发送字节。由于某种原因 socket.sendall(data) 将字节附加到数据中。使另一端无法解码
- javascript - 从初始下拉列表中动态创建的下拉列表匹配 Vue 模型中的值
- regex - 加号和空格的正则表达式
- javascript - 无法将属性从父级发送到子级
- sql - 在 case 语句中搜索字符串是否存在特定字符
- excel - 比较列然后在最后一行之后添加文本
- javascript - 用 JavaScript 中另一个数组的元素替换数组的某些特定项
- laravel - 常量表达式包含无效操作,并且不允许将表达式作为默认值错误
- java - 从收藏夹工具栏 java.lang.ClassNotFoundException 启动 Eclipse 时出错:org.eclipse.core.runtime.adaptor.EclipseStarter