嗨我有以下類,我試圖從相機膠捲獲取照片並顯示它。反應原生CameraRoll.getPhotos API不呈現結果
class CameraRollProject extends Component {
constructor(props) {
super(props);
this.state = {
images: []
};
}
componentWillMount() {
const fetchParams = {
first: 25,
};
CameraRoll.getPhotos(fetchParams, this.storeImages, this.logImageError);
}
storeImages(data) {
const assets = data.edges;
const images = assets.map((asset) => asset.node.image);
this.state.images = images;
}
logImageError(err) {
console.log(err);
}
render() {
return (
<ScrollView style={styles.container}>
<View style={styles.imageGrid}>
{ this.state.images.map((image) => <Image style={styles.image} source={{ uri: image.uri }} />) }
</View>
</ScrollView>
);
}
};
export default CameraRollProject;
問題是我的渲染功能在我的CameraRoll.getPhotos承諾得到解決之前得到調用。所以我沒有得到任何照片。
爲了解決這個問題,我改變了我的程序分爲以下
render() {
return CameraRoll.getPhotos(fetchParams, this.storeImages, this.logImageError)
.then(() => {
return (
<ScrollView style={styles.container}>
<View style={styles.imageGrid}>
{ this.state.images.map((image) => <Image style={styles.image} source={{ uri: image.uri }} />) }
</View>
</ScrollView>
);
});
}
然而,這給我下面的錯誤
我可以在上面的情況怎麼辦?如何確保渲染器僅在CameraRoll.getPhotos得到解決後才能使用。
我想使用本機'''CameraRoll.getPhotos'''不是任何第三方庫。 –