react redux怎么样写可重用组件
如果是react的话,没什么好说的,做好抽象即可。如果严格按照题目react + redux的话,抱歉做不到做不到的意思,就是怎么写都不会很好重用我说了当然不算,Redux作者Dan自己说的:Dan的博客:There is no easy way to compose redux applicationsDan开的issue,至今仍然open:Reducer Composition with Effects in JavaScript · Issue #1528 · reactjs/redux · GitHubRedux的reducer脱胎于Elm的update,然而Elm的架构是非常强势的,它要求所有组件的代码都拆分成严格遵循架构的Model-View-Update + Msg四个部分,每个部分都可以自由组合。这里面的Update其实就是单个组件的状态机reducer,Msg就是组件的action,view不用说了就是视图,M-V-U合在一起,能够完整地表达组件的视图与行为。虽然组件被拆成了几个部分,但是合在一起就可以作为App运行,分开则可以各自被compose。而在Redux中,以下三点差异决定了Redux 很难做到组件级的优雅composable:reducer和组件完全分离,整个state tree是被reducer tree预定义的,这使得用reducer表达组件状态非常不自然。在Elm中,update随组件定义,state tree随组件树组合,天然为组件服务action基于字符串和对象,目前没看到可行的组合方案。而Elm中Msg借助Union Type,组合非常轻松reducer是纯函数,需要借助middleware处理副作用,而middleware位于全局最顶层,如果组件依赖了某个middleware,就像函数依赖了全局变量,compose也就变得非常困难了。目前来看,整个Redux社区正在走向和Elm Architecture完全不同的道路:reducer更多服务于domain object提倡纯组件,但稍复杂的场景很容易会回归到react的state对可复用的UI逻辑抽象出新的面向特定领域的reducer,比如redux-form就在全局挂载一个reducer解决表单这一“类”的UI问题。Elm过度强势的架构使得本来就小众的社区更加发展缓慢, 毕竟接受、迁移成本非常高,遇到坑也没人帮忙填,特别是没有大厂背书的情况下。极端的composable风格虽然优雅,但UI开发很多时候并没那么讲道理,常见的modal、loading spinner,现阶段用Elm处理起来仍然会棘手。而Redux方面, 复用UI + 行为 虽然很不自然(需要在UI、reducer、action甚至middleware层分别做适配),但在多数项目中可以承受。而良好的分层、无状态的reducer相比Flux、reflux 既有理念上的传承,又能带来质的提升(无状态reducer相比有状态store绝对是质的提升,flux的演进历史可以参考如何理解 Facebook 的 flux 应用架构? - Kpax Qin 的回答)。更重要的是,这种理念上的“中立”与“循序渐进”更容易被社区接纳,对开源项目来说,这就是生死存亡的问题。往好的方向靠近一点点然后生存下来是优秀且流行的开源项目的共性。未来的话,因为domain object的核心问题其实是优雅同步,而不是状态管理与复用。猜测Redux社区会在ui state的管理上发力,弱化domain object,不排除这方面有新的成员加入全家桶。现阶段?抽象好UI组件,静观时变吧。小广告时间:想更多了解Elm?欢迎参考:Elm入门实践(一)——基础篇
■网友
区分 dumb components 和 smart components , redux 的作者又称之为 presentational components and container components 。Smart components 跟业务有关,复用程度低,用 mapStateToProps 和 mapDispatchToProps 与 redux 交互。Dumb components 跟业务关联程度低,例如 UI 组件,靠 props 与父组件交互。
■网友
redux-elm 还不错
■网友
使用 react.eval可以达到你的要求。
sunluna/react.eval不必非得借助redux,只用react组件和react.eval就可以做到。
【react redux怎么样写可重用组件】 redux实现相同的功能是可以的,只不过代码量多了一点。
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 青年|一汽奔腾T77怎么样?车主吐槽:后排座椅太短,和坐小板凳似的
- 电商网站支付流程的流失率是怎么样的从用户点击充值/支付按钮,到支付完成,其中每一步的流失比率都是咋样的
- 作为一个服装供应商,怎么样与淘宝卖家沟通才能卖出自己的产品或者拿到订单
- 在丁丁租房工作的感受是怎么样的
- 城市数据团是怎么样一个团队
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 猫扑网南迁广西,媒体唱衰BBS,论坛的未来会怎么样怎样改变
- 被人围攻是怎么样一种体验,包括但不限于(蛋糕,口舌,拳脚,西瓜刀,机枪,code review)
- o2o模式的电商怎么样进行线上线下的引流
