不知道标题有没有讲清楚需求,再详细讲述一下。
现在需要开发一个 npm package,这个包里面有一个大的 UI 组件,大家可以理解为一个 panel 。panel 上半部分是一个 tree 结构,下半部分是一个 sub-panel 。选中 tree 里面的一个结点,会显示该结点的“内容”到下方的 sub-panel 里面去。或者右键某结点,弹出一个菜单,点击菜单项,能够执行一些操作,或者弹出一个 dialog (该 dialog 也属于这个 package ),等等。
大家可能觉得很奇怪,一般我们都会把 UI 的 components 做成纯组件,然后放到一个 package 里面。这样,该 ui components 就可以被许多项目引用了。但是,我们这个需求,这个 package 里面包含的 ui 组件,不是纯组件,是有 logic,即业务逻辑在里面了。我们复用的是这个业务模块。
我能够想到的就是使用 react-redux,因为,弹出 /隐藏一个的 dialog,弹出 /隐藏菜单或者点击一个结点,显示 /隐藏 sub-panel,通过 redux 的集中管理 dispatch actions,比较容易实现。尤其是,一些异步操作,我们都是使用 redux-saga 。但是在一个 package 内使用 redux & redux-saga,感觉有点儿“重”。而且,我们的项目本身也是基于 react,并且大量使用了 redux & redux-saga 。我不知道我们项目的 application 在使用这个 package 后,app 的 redux store 会不会和 package 内部 ui 的 redux store 冲突。到时候 dispatch actions 会不会混乱,等等。
所以,特意来请教一下大家。对于这类需求,有没有比较好的成熟的实践方案。
谢谢!
p.s. 项目是 react, ts, redux 的技术栈
p.s.2 使用 Mobx? 以前完全没有使用过这个方案,不清楚成本有多高,会不会有什么技术坑...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.