こんにちは、カメラロールから写真を取得して表示しようとしている次のクラスがあります。
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 が解決された後にのみレンダリングが機能することを確認するにはどうすればよいですか。