如何在React中多次获取数据

问题描述 投票:0回答:1

我一直在开发一个全栈应用程序,在前端我使用react,对于后端我使用Django...... 我想要做的是,当用户登录时,它会自动呈现他关注的用户的所有帖子, 我有三个模型,帖子、用户、关注 首先我必须获取数据以获取所有关注者 id,然后我必须再次获取数据以获取与以下内容相关的所有帖子,, 我尝试这样做: 首页.js

const [following,setFollowing]=useState([]);
const getFollowing = async()=>{
  if(authToken){
  console.log("TOKEN : ",authToken.access);
 try{
  let response= await fetch(`${BASE_URL}profile/following/`,{
    method:"GET",
    headers:{
     
      "Content-Type":"application/json",
      "Authorization":`Bearer ${authToken.access}`,
    
    }
  })
let data= await response.json()
setFollowing(data)
}catch(error){
  console.log(error);
 }
}
//for getting posts 
const getPost= async (num)=>{
      let response= await fetch(`${BASE_URL}post/${num}`,{
        method:"GET",
        headers:{
        "Authorization":`Bearer ${authToken.access}`,
        "Content-Type":"application/json"
      },
      })
      let data= await response.json()
      console.log("Fetched Posts : ", data);
    }

//loop to fetch all posts 
const getAllPosts=()=>{
  let  values=Object.values(following)
  values.map(value=>(
   posts.push(value[Object.keys(value)[0]])
  ))
  var arrayLength=posts.length-1
  while(arrayLength=>0){
  getPost(posts[arrayLength])
  arrayLength-=1 }}

我不明白的是如何多次获取数据,就像我有以下 id's=[4,3] 如何将它们发送到 getPost 方法

javascript reactjs fetch-api
1个回答
0
投票

要实现获取当前用户关注的多个用户的帖子,您可以修改代码以循环遍历关注的 ID 列表并获取每个用户的帖子。以下是修改这两个函数的方法:

const getAllPosts = async () => {
  try {
    // Check if following is defined and not empty
    if (following && following.length > 0) {
      // Loop through each following ID
      for (let i = 0; i < following.length; i++) {
        const followingId = following[i].id;
        // Fetch posts for the current following ID
        await getPost(followingId);
      }
    } else {
      console.log("No following users found.");
    }
  } catch (error) {
    console.log(error);
  }
};

const getPost = async (userId) => {
  try {
    let response = await fetch(`${BASE_URL}post/?user=${userId}`, {
      method: "GET",
      headers: {
        "Authorization": `Bearer ${authToken.access}`,
        "Content-Type": "application/json"
      },
    });
    let data = await response.json();
    console.log("Fetched Posts for user ", userId, " : ", data);
  } catch (error) {
    console.log(error);
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.