비슷한 질문에 대한 답변을 모두 읽었으며 아무도 내 문제를 해결하지 못했습니다. 아래 코드와 첨부 된 스크린 샷에서 볼 수 있듯이 성공을위한 모든 조언을했지만 행운은 없습니다.URI 소스의 이미지가 React Native에 표시되지 않습니다.
- 나는 https로 플리커에서 사진을 검색하고있다 : // 유효한 API 키는
- 모든 필요한 사진이 성공적으로
- 이 FlatList 사용 (스크린 샷 참조) 검색 및 var에 imadeData에 저장됩니다 (코드 참조) 사진 ID를 통해 3 열의 항목을 나열하십시오. 스크린 샷은 3 개의 칼럼을 보여 주지만 사진은 보이지 않습니다.
Photo.js
const url = 'https://api.flickr.com/services/rest/?&method=flickr.people.getPublicPhotos&api_key=' + API_KEY + '&[email protected]&format=json&&per_page=20&nojsoncallback=1'; // MSU flickr
class Photos extends Component {
constructor (props) {
super(props);
this.state = {
imageData: [],
isLoading: true,
isError: false,
text: '',
columns: 3,
key: 1,
};
}
getImageData=() => {
return fetch(url)
.then((response) => response.json())
.then((responseJson) => {
this.setState({
isLoading: false,
imageData: responseJson.photos.photo
});
})
.catch((error) => {
console.error(error);
});
};
componentDidMount() {
this.getImageData();
}
<FlatList
numColumns={ columns }
data = { imageData }
// extraData={this.state}
renderItem={ ({ item, index }) => {
return <ImageList itemWidth={ (ITEM_WIDTH - (10 * columns))/columns }
photoId={ {uri: item.id } } />
}}
keyExtractor={
(item, index) => {
return `${item.id + index}`
// return { index }
}
}
// refreshing={this.state.refreshing}
// onRefresh={this.handleRefresh}
/>
ImageList.js없는 사진 2
편집과
render() {
const {itemWidth, photoId, onPressItem } = this.props;
return (
<Card>
<TouchableWithoutFeedback
onPress = {() => onPressItem && onPressItem(this.props.photoId)}
onPressIn = {() => this.animateIn()}
onPressOut ={() => this.animateOut()} >
<Animated.View style={{
margin:5,
// backfaceVisibility: 'hidden',
transform: [
{
scale: 1
},{
rotateY: this.state.animateItem.interpolate({
inputRange: [0,1],
outputRange: ['180deg','0deg']
})
}
]
}}>
<Image style={{width: itemWidth, height: 200 }} source={{ photoId }} />
</Animated.View>
</TouchableWithoutFeedback>
</Card>
);
}
Chrome console log with no errors and correct data retrieved
[iOS 시뮬레이터 화면을 보여주는 그리드보기 :
마지막 응답의 포인터에 따라 사진 ID 대신 전체 URL이있는 새로운 변수 photoURL로 photoId를 다시 만들었습니다. 나는 다음을 사용한다 : const photoURL = 'https://farm'+ item.farm + '.static.flickr.com /'+ item.server + '/'+ item.id + '_'+ item.secret + '_c.jpg ';
const photoURL = 'https://farm' + item.farm + '.static.flickr.com/' + item.server + '/' + item.id + '_' + item.secret + '_c.jpg';
return <ImageList itemWidth={ (ITEM_WIDTH - (10 * columns))/columns }
image={ {uri: photoURL } } />
는 또한 올바른 사진이 브라우저에 각 코딩 사진을 붙여 이미지의 src URI에 PARAM로 반환되고 있음을 확인했습니다.
하지만 이미지는 여전히 내 수정 사항이 적용된 앱 화면에 표시되지 않습니다. 내 기분이 끝날 때 도와 줘. 감사.
photoId는 photo.js에서 소품으로 전달되며 여기에서 photo.js는 Flickr의 JSON 응답을 통해 검색됩니다. 데이터가 반환 된 유효한 소스입니다. 코드 스 니펫을 참조하십시오. 뭔가를 볼 수 있다면 구성 요소 (photo.js 및 imageList.js) 사이의 데이터를 수정해야합니다. 그렇지 않으면 조언하십시오. 귀하의 답변 Thx. – Obisi7