Asp.net Boilerplate下如何向场景注入多个mobx-react Store?
Asp.net Boilerplate 搭配 mobx-react 多Store注入方案解答
核心结论
你当前的实现是完全正确且符合规范的写法,Asp.net Boilerplate 框架没有限制单组件注入Store的数量,也不存在「单场景只能注入一个Store」的强制设计规则。
公开示例少见多Store注入的原因
官方和社区公开的示例大多仅演示单Store注入,是出于简化场景的目的:大多数示例场景下单个组件仅依赖单一业务域的状态,不需要用到多Store,并不代表多Store注入是不被支持的用法。
相关设计规范和注意事项
- Asp.net Boilerplate 前端的Store本质是依赖注入容器中注册的单例服务,
@inject装饰器本身是mobx-react提供的原生能力,支持传入多个Store标识符拉取对应实例,你当前传入Stores.RefineryStore, Stores.UserStore的写法没有任何问题,和ABP的DI逻辑完全兼容 - 实际开发中只要遵循Store的单一职责原则即可:不同业务域的状态和逻辑拆分到不同Store维护,比如用户相关逻辑全放在
UserStore,炼厂相关业务全放在RefineryStore,不要跨Store混写业务逻辑,即使同时注入多个Store也不会出现维护问题 - 你当前的TS类型定义写法是规范的,在
IRefineryProps中声明所有注入的Store类型,能保证类型检查正常运行 - 如果有多个组件都需要同时注入相同的多个Store,可以自行封装组合式的自定义装饰器减少重复代码,该优化属于业务层可选操作,不影响框架层面的合法性
内容的提问来源于stack exchange,提问作者Ilkay Citak
相关产品推荐
相关产品推荐

