У меня следующий вопрос, как я могу отобразить данные в режиме реагирования с помощью useparams? У меня есть следующий фрагмент кода в моем Details.jsx
import React from 'react'
import {useParams} from 'react-router-dom'
const Details = () => {
const userData = JSON.parse(localStorage.getItem('user'))
const token = userData ? userData.accessToken : null
const params = useParams()
const [load, setLoad] = React.useState(false)
const getAccountDetails = React.useCallback(async () => {
setLoad(true)
await fetch (`http://localhost:4000/api/account/findonecard/${params.idCard}`, {
headers: {
'Authorization': `Bearer ${token}`
}
}).then(res => res.json()).then(response=>{
console.info(response)
//My response drops the data I need
})
}, [])
React.useEffect(() => {
getAccountDetails()
}, [getAccountDetails])
return (
<>
<div>Details</div>
{
!load ?
(
<Detail card = {{
username: card.fullname,
description: card.description,
mainPic: card.pic_profile,
userTags: card.usertags
}} />
)
:
(
<div style = {{ position: 'relative', zIndex: 99, color: '#000000', fontFamily: 'sans-serif', textAlign: 'center', margin: '60px auto' }}>No Card to show</div>
)
}
</>
)
}
export default Details
Это освобождает объект с моими данными, такими как фотография, описание, имя и т. д. Хотя я пытался перебрать объект, я не могу отобразить данные на моем Front, что я упускаю?
Это мой Detail.jsx
const Detail = ({ card }) => {
return (
<div className = "content">
<div className = "content_card-container">
<ShowMore/>
<h2 className = "content_card-username">{card.username}</h2>
<div
className = "content_card-image"
style = {{
backgroundImage:
`url(${card.cardImg})`
}}
/>
<div className = "content_tags-slider">
<SliderComponent tags = {card.userTags} />
</div>
</div>
<div className = "content_user-description">
<p className = "content_user-description-text">{card.description}</p>
</div>
<div className = "content_choice-container">
<img src = {Dislike} alt = "" className = "content_choice-icon" />
<img src = {Like} alt = "" className = "content_choice-icon" />
</div>
</div>
);
};
@RubenSmn Да, я уверен, да ладно, мои коллеги сказали мне, что мы работаем с React Native





Чтобы отслеживать детали учетной записи, мы создадим состояние.
const [accountDetails, setAccountDetails] = useState({});
В функции getAccountDetails можно установить состояние с полученными данными от апи. Вы также смешиваете и сочетаете await и then, вы должны использовать один. Давайте пойдем с await для этого
const getAccountDetails = React.useCallback(async () => {
setLoad(true);
const response = await fetch(
`http://localhost:4000/api/account/findonecard/${params.idCard}`,
{
headers: {
Authorization: `Bearer ${token}`,
},
}
);
const data = await response.json();
// console.info(data);
setAccountDetails(data);
setLoad(false); // set load to false
}, []);
При передаче данных карты в компонент Detail мы можем использовать accountDetails вот так
<Detail
card = {{
username: accountDetails.fullname,
description: accountDetails.description,
mainPic: accountDetails.pic_profile,
userTags: accountDetails.usertags,
}}
/>
Возможно, вы захотите установить начальное состояние load на true
Вы уверены, что речь идет о React Native? Вы не используете компоненты React Native?