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
的操作。创建帖子获取创建的帖子数据,包括imageuri
和其他元数据
,然后通过将新创建的帖子前置到旧状态来更新我的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,此时堆栈中有两个主屏幕。