【问题标题】:React Native Maps with Redux: Choppy region changesReact Native Maps with Redux:Choppy region changes
【发布时间】:2018-03-04 10:32:27
【问题描述】:

使用以下内容:

  • React-Native-Maps (AirBnB - 0.16.4)
  • Redux

我对如何更新我的 state.map.region 有点困惑。我有触发状态变化的手动和自动(animateToCoordinate)动作。我不确定是否使用 onRegionChange、onRegionChangeComplete 或 onMapReady 来更新与我的地图关联的当前区域。到目前为止,我尝试过的所有组合都导致了地图跳回之前状态(区域)的不稳定动画。

到目前为止,效果最好的是在 onRegionChange 和 onRegionChangeComplete 处使用新区域更新局部变量,然后在 onMapReady 上调度该更改。 ..但这仍然不理想且不稳定。

似乎 onRegionChangeComplete 被调用得太早了。

【问题讨论】:

    标签: javascript react-native redux react-native-maps


    【解决方案1】:

    我将MapView 的区域设置为从状态派生,然后使用onRegionChangeComplete 触发重新渲染地图的setState。 在受控的拖放式移动中,它运行良好,但是当拖动地图并放开它时,它会滑动直到它停止。在这种特殊情况下,onRegionChangeComplete 似乎会触发多次,这会触发多个setState 调用,这在视觉上并不总是很漂亮,但它是我能在 iOS 上运行的最接近的事情。

    【讨论】:

    • 我曾经做过类似的事情——但不是使用 set state,我会使用 redux 调度区域。这在一段时间内可以正常工作,但现在在 iOS 11 中它变得无法使用。
    • @kardolus 在升级到 iOS 11 后,我不得不重新访问部分地图代码。您之前的“initialRegion”响应确实更好
    【解决方案2】:

    最终为我解决这个问题的是在 MapView 组件中设置 intialRegion 而不是区域。一旦我添加了 initialRegion 并删除了区域,断断续续的动画就不再是问题了。

    【讨论】:

      【解决方案3】:

      MapView 中删除region = {this.state.region} 为我解决了类似的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多