Реагирующий маршрутизатор — щелчок по карточке и перенаправление на новую страницу с содержимым этой карты (данные карты)

#reactjs

#reactjs

Вопрос:

У меня есть список карточек, на которых показаны фильмы / телепередачи. Что мне нужно, так это то, что когда я нажимаю на карту, она перенаправляет меня на новую страницу (страница сведений), где я могу увидеть детали этого конкретного фильма / карты.

Мой card.js и card-collection.js являются:

карта :

 import React from 'react';
import './card.styles.css';

const Card = ({ item }) => (
  <div className='card-container'>
    <div
      className='image'
      style={{
        backgroundImage: `url(https://image.tmdb.org/t/p/w1280${item.backdrop_path})`,
      }}
    ></div>
    <div className='basic-info'>
      {item.name ? (
        <p className='title'>{item.name}</p>
      ) : (
        <p className='title'>{item.title}</p>
      )}

      {item.first_air_date ? (
        <p className='title'> {item.first_air_date.substring(0, 4)}</p>
      ) : (
        <p className='title'>{item.release_date.substring(0, 4)} </p>
      )}
    </div>
  </div>
);

export default Card;
  

коллекция карт:

 import React from 'react';
import Card from '../card/card.component';
import './card-collection.styles.css';

class CardCollection extends React.Component {
  goToDetails = (item) => {
    localStorage.setItem('selectedItem', item);
    this.props.history.push('/details');
  };

  render() {
    console.log('PROPOVI SUUU', this.props);
    return (
      <div className='card-collection'>
        {this.props.items.data
          .filter((item, idx) => idx < 10)
          .map((item) => (
            <Card
              key={item.id}
              item={item}
              onClick={() => this.goToDetails(item)}
            />
          ))}
      </div>
    );
  }
}

export default CardCollection;
  

Я пробовал несколько вещей, но, похоже, я не могу передать реквизиты своей карты (я могу работать только с идентификатором, если ничего другого), но я не смог отправить эту информацию через или что-то еще, что я пробовал.

Ответ №1:

Вам нужно обернуть компонент вашей карты тегами ссылок с указанным маршрутом.

<Link to="details/${id}"> <Card props={props} /> </Link>

Документы реагируют-ссылка на маршрутизатор

Ответ №2:

Вы передаете onClick событие в качестве поддержки Card компоненту. Это не приведет к захвату события щелчка по элементу карты в списке. Попробуйте обернуть Card компонент в элемент, который будет фиксировать щелчок. Что-то вроде этого должно работать:

 <div onClick={() => this.goToDetails(item)}>
    <Card key={item.id} item={item} />
</div>