/wp-json/wp/v2/media/ wordpress APIにアクセスして、 guid.renderedから画像の uri を取得し、それを FlatList 内の Image に設定しようとしていますが、次のエラーが発生します
不変であることが意図されており、凍結されているオブジェクトにキー _v を値 1 で設定しようとしました。
ホーム.js
return(
<SafeAreaView style={styles.container}>
<View>
{isLoading ? <ActivityIndicator /> : (
<FlatList
onRefresh={onRefresh}
refreshing={isFetching}
data={post}
keyExtractor={({ id },index) => id}
renderItem={({ item }) => (
<TouchableOpacity onPress={() => Alert.alert('Blog reader feature will be available soon!')}>
<View style={{padding:5,backgroundColor:'#3578e5',margin:5}}>
<Image style={{width:Dimensions.width,height:250}} source={{
uri: getBlogPostsImage(item.featured_media)
}}/>
<Text style={{fontWeight:'bold',color:'#fff',fontSize:20,marginTop:5}}>{item.title.rendered}</Text>
<Text style={{color:'#fff',marginTop:5}}>{item.date}</Text>
<RenderHtml source={getContent(item)} tagsStyles={tagsStyles} />
</View>
</TouchableOpacity>
)
}
/>
)}
</View>
</SafeAreaView>
);
getBlogPostsImage()
const getBlogPostsImage = async (id) => {
try {
const response = await fetch('http://wp.devlops.xyz/wp-json/wp/v2/media/'+id);
const jsonPostImage = await response.json();
return jsonPostImage.guid.rendered;
} catch (error) {
Alert.alert("Failed to load image");
}
}
注目の画像が存在するかどうかも取得しようとしましたが、それも機能しませんでした
{item.featured_media>0 ? <Image style={{width:Dimensions.width,height:250}} source={{
uri: getBlogPostsImage(item.featured_media)
}}/>:null}
アップデート
ここで提供されるソリューションを使用すると、URI は/wp-json/wp/v2/posts/idに表示されるようになりましたが、取得されません!
更新されたフラットリスト
<FlatList
onRefresh={onRefresh}
refreshing={isFetching}
data={post}
keyExtractor={({ id },index) => id}
renderItem={({ item }) => (
<TouchableOpacity>
<View style={{padding:5,backgroundColor:'#3578e5',margin:5}}>
{item.featured_media>0?<Image style={{width:Dimensions.width,height:250}} source={{
uri: item.featured_media_uri
}}/>:null}
<Text style={{fontWeight:'bold',color:'#fff',fontSize:20,marginTop:5}}>{item.title.rendered}</Text>
<Text style={{color:'#fff',marginTop:10}}>{item.date}</Text>
<RenderHtml source={getContent(item)} tagsStyles={tagsStyles} />
</View>
</TouchableOpacity>
)
}
/>