我们目前正在为我们公司制作新的网络地图解决方案。到目前为止,我们决定使用React
和OpenLayers 4
构建应用。由于我们希望在我们的架构中使用Redux
模式,因此将有一个redux存储保存应用程序状态。
我们面对这个堆栈的问题如下:
地图是我们应用程序中的中心元素,它的实例需要传递给许多不同的组件。例如,用于在地图上绘制要素的工具需要引用map
实例,以便它可以将其作为交互工具添加到其中。
我们讨论了如何构建应用程序以最可靠的方式将OpenLayers
与React
集成,最后采用两种不同的方法:
我们讨论的第一种方法是在应用程序范围的redux存储中保存对map对象的引用,以便它可以通过{{1} @connect
注释函数传递给任何组件。 }}。
虽然这个解决方案提供了对react-redux
的轻松访问,但我们想知道这是否是一种易处理的方法,因为存储应该保持最小,并且map
对象在应用程序的整个生命周期中永远不会改变。
第二种方法将渲染组件(如上面提到的绘制交互)视为反应图组件的子组件。然后,map
实例可以直接作为map
传递给地图组件的子项,或者使用prop
模式利用反应context
对象。
但是,react documentation明确建议不要使用Provider
,尽管我们发现了许多使用此模式的解决方案(react-geo,react-leaflet)以及context
等热门库使用它。
因此,我们考虑使用react-redux
克隆子组件,然后将React.Children.map()
添加为map
。
我希望我们面临的问题足够清楚。我们不知道在prop
最佳做法方面哪种方式更好。
什么样的架构更适合"反应方式"设计/管理和应用以及为什么?
答案 0 :(得分:0)
我在这里参加聚会很晚,但是六个月前,我建议使用Context API,因为Redux正在使用它。作为替代解决方案,我只需要在window.app.cache上维护一个全局对象引用即可。
现在,React Context API是实现此目的的方法。希望佐贺没有使该项目复杂化!