Отображение данных в React Native с помощью useParams

У меня следующий вопрос, как я могу отобразить данные в режиме реагирования с помощью 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>
  );
};

Вы уверены, что речь идет о React Native? Вы не используете компоненты React Native?

RubenSmn 09.02.2023 13:38

@RubenSmn Да, я уверен, да ладно, мои коллеги сказали мне, что мы работаем с React Native

Yordy Mora 09.02.2023 15:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
3
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы отслеживать детали учетной записи, мы создадим состояние.

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

Другие вопросы по теме