Как напечатать определенный элемент массива, переданный через контекстный api?

#reactjs #react-hooks #context-api

Вопрос:

Я пытаюсь распечатать определенный элемент массива в зависимости от пользователя, как мне получить этот конкретный элемент и распечатать его на экране ????

 const state = useContext(GlobalState) const[ulocations]=useState(state.categoriesAPI.locationapi[0])   const [userlist]=useState([{location_id:'5476',name:'John', age:36}])  // ulocations is an ARRAY OF OBJECTS [{...},{...},{...}]  // where an obj contains{_id:'5476',name:'europe'}      const findspecificcountry=()=gt;{    for(let i=0;ilt;ulocations.length;i  ){   if(ulocations[i]._id==myuserlist[0].location_id){  return ulocations[i].name  }  }   }    return(  userlist.map(a=gt;{ lt;h1gt; a.name lt;/h1gt; lt;h2gt;a.age lt;/h2gt; lt;h3gt; {findspecificcountry()} lt;/h3gt; // doesnt print the value europe ????? nothing appears  })  )  

Ответ №1:

Если вы пытаетесь извлечь свои местоположения из GlobalState контекста, вы бы сделали это с помощью:

 const { state, dispatch } = useContext(GlobalState) const ulocations = state.categoriesAPI.locationapi[0] // Assuming this is your location list  

Похоже, что ваш список пользователей также должен быть постоянным и здесь. useState Крючок не нужен:

 const userlist = [{location_id:'5476',name:'John', age:36}]  

Когда вы сопоставляете свои userlist данные , вы можете затем передать идентификатор местоположения пользователя в свою функцию:

 userlist.map(a =gt; {  ...  lt;h3gt; {findspecificcountry(a.location_id)}lt;/h3gt; })  

Затем функция примет этот параметр местоположения:

 const findspecificcountry = (id) =gt; {}  

Я не знаю формата ваших данных API, поэтому оставляю обновление функции на ваше усмотрение.