在Redux架构中集成React和OpenLayers

时间:2018-01-26 08:38:05

标签: javascript reactjs redux react-redux openlayers

我们目前正在为我们公司制作新的网络地图解决方案。到目前为止,我们决定使用ReactOpenLayers 4构建应用。由于我们希望在我们的架构中使用Redux模式,因此将有一个redux存储保存应用程序状态。

我们面对这个堆栈的问题如下:
地图是我们应用程序中的中心元素,它的实例需要传递给许多不同的组件。例如,用于在地图上绘制要素的工具需要引用map实例,以便它可以将其作为交互工具添加到其中。 我们讨论了如何构建应用程序以最可靠的方式将OpenLayersReact集成,最后采用两种不同的方法:

  1. 我们讨论的第一种方法是在应用程序范围的redux存储中保存对map对象的引用,以便它可以通过{{1} @connect注释函数传递给任何组件。 }}。 虽然这个解决方案提供了对react-redux的轻松访问,但我们想知道这是否是一种易处理的方法,因为存储应该保持最小,并且map对象在应用程序的整个生命周期中永远不会改变。

  2. 第二种方法将渲染组件(如上面提到的绘制交互)视为反应图组件的子组件。然后,map实例可以直接作为map传递给地图组件的子项,或者使用prop模式利用反应context对象。
    但是,react documentation明确建议不要使用Provider,尽管我们发现了许多使用此模式的解决方案(react-georeact-leaflet)以及context等热门库使用它。
    因此,我们考虑使用react-redux克隆子组件,然后将React.Children.map()添加为map

  3. 我希望我们面临的问题足够清楚。我们不知道在prop最佳做法方面哪种方式更好。

    什么样的架构更适合"反应方式"设计/管理和应用以及为什么?

1 个答案:

答案 0 :(得分:0)

我在这里参加聚会很晚,但是六个月前,我建议使用Context API,因为Redux正在使用它。作为替代解决方案,我只需要在window.app.cache上维护一个全局对象引用即可。

现在,React Context API是实现此目的的方法。希望佐贺没有使该项目复杂化!