【发布时间】:2017-12-11 19:12:17
【问题描述】:
我使用了 react-native 的 ListView 组件,并用它来渲染产品细节和图片。
现在,加载图像后,我正在向下滚动视图。回到以前的产品时,只有图像消失了,似乎又从源头加载了。
图片来源是一个网址。
请告诉我如何将已加载到当前 react Native android 屏幕中的图像持久化。
我正在使用:
"dependencies": {
"react": "16.0.0-alpha.12",
"react-native": "0.45.1",
"react-native-keyboard-aware-scroll-view": "^0.2.9",
"react-native-vector-icons": "^4.2.0",
"react-navigation": "^1.0.0-beta.11"
},
更新代码供参考:
<ListView
renderRow={this._renderRow.bind(this)}
dataSource={this.state.dataSource}
pageSize={data.length}/>
</View>
_renderRow(data){
return (
<View style={styles.boxContainer}>
<Image
style={styles.image}
resizeMode={'contain'}
source={{uri: "https://vesyl.in/"+data.image_url}}
/>
</View>
</View>
)
}
来自 API 的响应:
data = [];
for(let i=0; i<responseJson.data.length; i++){
var t = responseJson.data;
data.push(t[i]);
}
const ds = new ListView.DataSource({rowHasChanged: (r1, r2)=>r1!==r2});
this.setState({dataSource: ds.cloneWithRows(data)});
data.image_url 是包含图片 url 的对象。
【问题讨论】:
-
由于您使用的是 RN 0.45,我建议您使用 FlatList 而不是 ListView。除此之外,我真的需要查看您的代码以进一步帮助您。
-
@dejakob 请检查代码
-
能否在_renderRow中添加console.log并检查它是否被重新渲染?
-
你想在控制台检查什么?我正在正确获取图像,问题是如果我滚动回顶部,它不会持续存在。
-
您是否通过在
Image组件中使用类似cache属性(仅限iOS)或使用类似react-native-img-cache 的包来检查这是否是缓存问题?
标签: android image react-native react-native-android react-native-listview