0

/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>
        
      )
    }
    />
4

0 に答える 0