React native React原生平面列表不';导航后不显示图像。pop()

React native React原生平面列表不';导航后不显示图像。pop(),react-native,react-native-flatlist,React Native,React Native Flatlist,主要技术有:FlatListReact导航5ReduxRedux-Thunk 主页是文章的提要(图片、标题、名称等)。主页的右上角是一个标题按钮,我按下它可以进入屏幕,在那里我可以创建一篇文章。这是一个图像,标题或两者都将被添加到我的主页 下面是我的FlatList代码供参考。我已经尝试设置removeClippedSubviews={false}。这样做不起作用,实际上会使问题变得更糟 <FlatList ref={flatList

主要技术有:
FlatList
React导航5
Redux
Redux-Thunk

主页是文章的提要(图片、标题、名称等)。主页的右上角是一个标题按钮,我按下它可以进入屏幕,在那里我可以创建一篇文章。这是一个图像,标题或两者都将被添加到我的主页

下面是我的
FlatList
代码供参考。我已经尝试设置
removeClippedSubviews={false}
。这样做不起作用,实际上会使问题变得更糟

            <FlatList
                ref={flatListRef}
                data={allPosts} 
                extraData={[isLoading, isRefreshing, allPosts]}
                refreshControl={
                    <RefreshControl 
                        refreshing={isRefreshing}
                        onRefresh={onRefresh}
                    />
                }
                keyExtractor={item => item._id}
                initialNumToRender={2}
                renderItem={renderItem}

                onEndReached={!endOfFeed && !oneTimeLoad && handleLoadMore}
                onEndReachedThreshold={2}
                ListFooterComponent={renderFooter}
                ListHeaderComponent={renderHeader}
                removeClippedSubviews={true} // Best way to optimize but sacrifices fast scroll down with blank space
                //getItemLayout={(data, index) => ({ length: POST_CARD_HEIGHT, offset: POST_CARD_HEIGHT * index, index})}
                //windowSize={20}

                //maxToRenderPerBatch={15}
                //updateCellsBatchingPeriod={50}
            />
item.\u id}
initialNumToRender={2}
renderItem={renderItem}
onEndReached={!endOfFeed&&!oneTimeLoad&&handleLoadMore}
onEndReachedThreshold={2}
ListFooterComponent={renderFooter}
ListHeaderComponent={renderHeader}
removeClippedSubviews={true}//优化的最佳方式,但会牺牲快速向下滚动的空白空间
//getItemLayout={(数据,索引)=>({length:POST\u CARD\u HEIGHT,offset:POST\u CARD\u HEIGHT*index,index})
//WindowsSize={20}
//maxToRenderPerBatch={15}
//updateCellsBatchingPeriod={50}
/>
在我按下“提交帖子”之前,我的堆栈导航器如图所示:
主屏幕
=>
CreatePostScreen
。在
CreatePostScreen
中按“提交”将向我的后端服务器发送一个调用
API
的操作。创建帖子获取创建的帖子数据,包括image
uri
和其他
元数据
,然后通过将新创建的帖子前置到旧状态来更新我的redux状态

然后我打电话到
navigation.pop()
让我回到
主屏幕
。当我再次看到它时,我会看到一个帖子,上面有所有相关数据,除了没有显示图像。只有向下滚动到看不见的地方,然后再返回到它,我才能看到它


任何见解都会有帮助。

听起来简单的解决方案是使用不同的导航方法,如
导航。导航(“主屏幕”)
导航。替换(“主屏幕”)
。您提到,如果您向下滚动浏览帖子,然后备份图像,则图像会重新加载,因此我认为使用不同的导航可能会奏效。

听起来简单的解决方案是使用不同的导航方法,例如
导航。导航('HomeScreen')
导航。替换('HomeScreen'))
。您提到,如果您向下滚动过帖子,然后备份,则图像将重新加载,因此我认为使用不同的导航可能会起到作用。

这是一个与我的后端以及图像通常如何上载有关的问题

因为有一个AWSLambda函数可以将上传的图像转换为不同的大小以提高效率,所以立即弹出到主提要并尝试抓取刚上传的图像会导致图像加载失败,因为它还没有以其大小调整后的格式存在


Lambda运行得很快,但状态更新速度更快。

这是一个与我的后端以及图像上传方式有关的问题

因为有一个AWSLambda函数可以将上传的图像转换为不同的大小以提高效率,所以立即弹出到主提要并尝试抓取刚上传的图像会导致图像加载失败,因为它还没有以其大小调整后的格式存在


Lambda运行得很快,但状态更新速度更快。

是否可以显示一些代码?如果太复杂,伪代码也可以。这有点罗嗦,有点难以理解是的,我可以添加一些psedo代码并澄清better@James试图让它更清晰一点,并添加了我的平面列表代码供参考。是否可以显示一些代码?如果太复杂,伪代码也可以。这有点罗嗦,有点难以理解是的,我可以添加一些psedo代码并澄清better@James试图让它更清晰一点,并添加了我的平面列表代码以供参考。不会
replace
只是用我指定的新屏幕替换我的当前屏幕。但保留现有的堆栈屏幕,即如果我有S1->S2->S3,其中S1是“主屏幕”。如果我调用
replace
我的堆栈将显示为S1->S2->S1,此时堆栈中有两个主屏幕。不
replace
只需将当前屏幕替换为我指定的新屏幕即可。但保留现有的堆栈屏幕,即如果我有S1->S2->S3,其中S1是“主屏幕”。如果我调用
replace
我的堆栈将显示为S1->S2->S1,此时堆栈中有两个主屏幕。