Как правильно передать props

99
12 марта 2022, 05:00

Мне нужно чтобы по нажатию на карточку с фильмом переходило на страницу где будет больше деталей про этот фильм. Как правильно я должен передать props чтобы потом их вытянуть на странице about.

JSX

import React from "react";
import './homepage.scss';
import { Link } from "react-router-dom";
class Homepage extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            "results" : []
        }
        this.getRate();
    }
    getRate = () =>{
        fetch("https://api.themoviedb.org/3/movie/popular?api_key=6f7c9fe2b5229b4b0b6dbe66fed3ef18&language=en-US&page=1")
            .then(films => {
                return films.json();
            })
            .then(films => {  
               this.setState({results:  films.results});
            });
        }  
    render(){
        return(
            <div className='homepage'>
                    {this.state.results.map((value, index)=>{
                        return(
                            <Link to="/about" key={index}>
                                    <div className="filmCard" >
                                        <div className="desc">
                                            <h4>{value.title}</h4>
                                            <p>{value.overview}</p>
                                            <span>{value.release_date}</span>
                                        </div>
                                    </div>
                            </Link>
                        )
                        })}
            </div>
        );
    }
}
export default Homepage;

Спасибо большое

Answer 1

Можно передать необходимое состояние прямо в Link, но я бы рекомендовал для хранения глобального состояния ознакомиться и использовать Redux/MobX.

Пример:

<Link to={{
  pathname: '/about',
  state: {
    someStateValue: 1,
  }
}}>Link text</Link>

Взаимодействовать с переданными данными можно с помощью this.props.location.state.

Пример рабочей реализации: https://codesandbox.io/s/adoring-microservice-5uj73.

READ ALSO
Дсесериализация части объекта как subobject

Дсесериализация части объекта как subobject

Допустим есть некий json объект, и мне не нравится расположение полей в нем:

169
Автозаполнение логина и пароля в приложении под iOS

Автозаполнение логина и пароля в приложении под iOS

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

149
Юнит-тестирование в геймдеве при наличии сильных зависимостей

Юнит-тестирование в геймдеве при наличии сильных зависимостей

Есть класс TextureRegion2D, который представляет собой прямоугольный фрагмент текстуры и принимает в конструкторе экземпляр Texture2D текстуры, на которой...

182