我的 React Native 应用程序有一个图形错误,它只出现在 iOS 上,不会出现在 Android 上。
当我更新我的应用程序的历史屏幕状态时(启动时,或者当我添加行程时,或者当我删除行程时),历史记录中我的行程项目列表消失(使用 React Native ListView 实现) .我需要触摸屏幕才能让它出现。之后,在屏幕之间导航期间,我没有问题(因为我没有重新呈现历史屏幕)。
我使用 redux + reactnavigation。
在启动时,我使用一个常见的 Action “LOAD_RIDES”,我在每个屏幕缩小器中重复使用它来更新它的状态。与 ADD_RIDE、REMOVE_RIDE Action 相同。
但我发现,如果我在启动时自动导航到历史记录(通过让我的导航 reducer 在启动时转到历史记录),并且屏幕更新发生在之后,而历史屏幕已经显示,我不'有这个错误(隐藏历史项目)。
知道如何解决这个问题吗?谢谢!
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-navigation": "1.0.0-beta.9",
"react-redux": "^5.0.3",
为了重现该错误,我创建了该存储库:https://github.com/jcharlet/react_native_listview_bug
有趣的部分是创建 listView 的 HistoryScreen。
https://github.com/jcharlet/react_native_listview_bug/blob/master/src/screens/history/HistoryScreen.js
master 分支显示了正在运行的错误
unsatisfying_workaround 分支显示,如果我在更新其状态之前显示历史屏幕,它会正确显示列表。
到目前为止,我尝试失败了
- 使用 ListView.scrollTo 渲染屏幕时滚动到 0,0
- 在导航到历史屏幕时使用 redux 再次加载游乐设施
- 升级 React 并将 React native 升级到最新版本
- 生成一个单独的 redux 操作用于在历史屏幕“LR”中加载游乐设施(否则我在 hackDetails 和历史屏幕中使用相同的 LOAD_RIDES 操作来更新它们的状态)
在 Chrome 开发工具中,当我使用导航解决方案(在加载游乐设施之前导航到历史屏幕)之前/之后以及我不使用时,我查看了 redux 状态:没有任何变化。
Best Answer-推荐答案 strong>
react-native 上的错误
我提出的问题 https://github.com/facebook/react-native/issues/14069 , 复制到 https://github.com/facebook/react-native/issues/1831
引用回答它的人的话:
can be worked around by adding removeClippedSubviews={false} to the ListView. It might cause some performance issues depending on large your list is https://facebook.github.io/react-native/docs/listview.html#removeclippedsubviews but that's what we have been using.
(根据 William 对属性拼写的评论进行编辑)
关于ios - listView 不显示,除非我滚动它,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/44022857/
|