菜鸟教程小白 发表于 2022-12-13 01:29:28

ios - listView 不显示,除非我滚动它


                                            <p><p>我的 React Native 应用程序有一个图形错误,它只出现在 iOS 上,不会出现在 Android 上。</p>

<p>当我更新我的应用程序的历史屏幕状态时(启动时,或者当我添加行程时,或者当我删除行程时),历史记录中我的行程项目列表消失(使用 React Native ListView 实现) .我需要触摸屏幕才能让它出现。之后,在屏幕之间导航期间,我没有问题(因为我没有重新呈现历史屏幕)。</p>

<p>我使用 redux + reactnavigation。
在启动时,我使用一个常见的 Action “LOAD_RIDES”,我在每个屏幕缩小器中重复使用它来更新它的状态。与 ADD_RIDE、REMOVE_RIDEAction 相同。 </p>

<p>但我发现,如果我在启动时自动导航到历史记录(通过让我的导航 reducer 在启动时转到历史记录),并且屏幕更新发生在之后,而历史屏幕已经显示,我不'有这个错误(隐藏历史项目)。</p>

<p>知道如何解决这个问题吗?谢谢!</p>

<pre><code>&#34;react&#34;: &#34;16.0.0-alpha.6&#34;,
&#34;react-native&#34;: &#34;0.44.0&#34;,
&#34;react-navigation&#34;: &#34;1.0.0-beta.9&#34;,
&#34;react-redux&#34;: &#34;^5.0.3&#34;,
</code></pre>

<p> <a href="/image/fji5J.gif" rel="noreferrer noopener nofollow"><img src="/image/fji5J.gif" alt="UI bug: need to scroll on History to display listView"/></a> </p>

<hr/>

<p>为了重现该错误,我创建了该存储库:<a href="https://github.com/jcharlet/react_native_listview_bug" rel="noreferrer noopener nofollow">https://github.com/jcharlet/react_native_listview_bug</a> </p>

<p> <a href="/image/n0Cl0.png" rel="noreferrer noopener nofollow"><img src="/image/n0Cl0.png" alt="project organisation"/></a> </p>

<p>有趣的部分是创建 listView 的 HistoryScreen。
<a href="https://github.com/jcharlet/react_native_listview_bug/blob/master/src/screens/history/HistoryScreen.js" rel="noreferrer noopener nofollow">https://github.com/jcharlet/react_native_listview_bug/blob/master/src/screens/history/HistoryScreen.js</a> </p>

<p>master 分支显示了正在运行的错误
unsatisfying_workaround 分支显示,如果我在更新其状态之前显示历史屏幕,它会正确显示列表。</p>

<hr/>

<p>到目前为止,我尝试失败了</p>

<ul>
<li>使用 ListView.scrollTo 渲染屏幕时滚动到 0,0</li>
<li>在导航到历史屏幕时使用 redux 再次加载游乐设施</li>
<li>升级 React 并将 Reactnative 升级到最新版本</li>
<li>生成一个单独的 redux 操作用于在历史屏幕“LR”中加载游乐设施(否则我在 hackDetails 和历史屏幕中使用相同的 LOAD_RIDES 操作来更新它们的状态)</li>
</ul>

<p>在 Chrome 开发工具中,当我使用导航解决方案(在加载游乐设施之前导航到历史屏幕)之前/之后以及我不使用时,我查看了 redux 状态:没有任何变化。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>react-native 上的错误
我提出的问题 <a href="https://github.com/facebook/react-native/issues/14069" rel="noreferrer noopener nofollow">https://github.com/facebook/react-native/issues/14069</a> , 复制到 <a href="https://github.com/facebook/react-native/issues/1831" rel="noreferrer noopener nofollow">https://github.com/facebook/react-native/issues/1831</a> </p>

<p>引用回答它的人的话:</p>

<blockquote>
<p>can be worked around by adding removeClippedSubviews={false} to the ListView. It might cause some performance issues depending on large your list is <a href="https://facebook.github.io/react-native/docs/listview.html#removeclippedsubviews" rel="noreferrer noopener nofollow">https://facebook.github.io/react-native/docs/listview.html#removeclippedsubviews</a> but that&#39;s what we have been using.</p>
</blockquote>

<p>(根据 William 对属性拼写的评论进行编辑)</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - listView 不显示,除非我滚动它,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44022857/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44022857/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - listView 不显示,除非我滚动它