gpt4 book ai didi

javascript - React Native CameraRoll.getPhotos API 不呈现结果

转载 作者:行者123 更新时间:2023-11-30 08:30:01 25 4
gpt4 key购买 nike

您好,我有以下类(class),我试图从相机胶卷中获取照片并显示它。

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 promise 得到解决之前被调用。所以我没有得到任何照片。

为了解决这个问题,我将我的程序更改为以下内容

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>
);
});
}

但是这给了我以下错误

Error screen

出现上述情况我该怎么办?如何确保渲染仅在 CameraRoll.getPhotos 得到解析后才有效。

最佳答案

所以我解决了这个问题。我遇到问题的主要原因是我没有正确使用 CameraRoll.getPhotos 作为 Promise。我在函数内部传递了不正确的参数。为了解决这个问题,我摆脱了以下功能

 storeImages(data) {
const assets = data.edges;
const images = assets.map((asset) => asset.node.image);
this.state.images = images;
}

logImageError(err) {
console.log(err);
}

然后像下面这样制作我的 CameraRoll.getPhotos

CameraRoll.getPhotos({first: 5}).then(
(data) =>{
const assets = data.edges
const images = assets.map((asset) => asset.node.image);
this.setState({
isCameraLoaded: true,
images: images
})
},
(error) => {
console.warn(error);
}
);

这是我在 react-native 中从 CameraRoll 获取图片的完整代码,以防万一有人感兴趣

class CameraRollProject extends Component {
constructor(props) {
super(props);
this.state = {
images: [],
isCameraLoaded: false
};
}

componentWillMount() {
CameraRoll.getPhotos({first: 5}).then(
(data) =>{
const assets = data.edges;
const images = assets.map((asset) => asset.node.image);
this.setState({
isCameraLoaded: true,
images: images
})
},
(error) => {
console.warn(error);
}
);
}

render() {
if (!this.state.isCameraLoaded) {
return (
<View>
<Text>Loading ...</Text>
</View>
);
}
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;

关于javascript - React Native CameraRoll.getPhotos API 不呈现结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com