#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, поэтому оставляю обновление функции на ваше усмотрение.