React 渲染不正确

React not rendering properly

更改我的 ID (/movie/:id) 时,我将重新渲染我的整个组件。有时我必须在我的喜欢上单击 3 或 4 次才能进行更改,有时我只需单击一次(但我落后了一个组件)。 这是我的代码:

import React from "react";
import "../styles/DetailFilm.css"
import {Link} from 'react-router-dom';
const API_IMAGES = 'https://image.tmdb.org/t/p/w500';


class DetailFilm extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
                    id: props.movie_id,
            info: {},
            recommandation: []
        }
    }
    componentDidMount() {
        const fetchData = async () => {
            //fetch api
            this.setState({info: data,recommandation:data_recommandation_spliced })
        }
        fetchData();
        

    }
    componentWillReceiveProps(nextProps) {
        console.log("RENDERING" + nextProps.movie_id)
        const fetchData = async () => {
            // fetch api

            this.setState({id: nextProps.movie_id,info: data,recommandation:data_recommandation_spliced })
            console.log("Rendered" + nextProps.movie_id)
        }
        fetchData();
    }
    render()  {
        return (
            //css
                    {this.state.recommandation.map((movie) => 
                        <Link to={`/movie/${movie.id}`}>
                            <img src = {API_IMAGES + movie.poster_path} className="image-movie-genre"/>
                        </Link>
                    )}
        )
    }

}
export default DetailFilm;

感谢您的帮助!

从数组中添加 JSX 元素时,每个元素都需要一个唯一的 key 属性,以便 React 可以跟踪 DOM 中的必要更改。您需要向 Link 元素添加键,以便 React 知道要更新它们。

我找到了一个解决方案,这不是我最初想要的解决方案。 我从使用 Class 更改为使用 useEffect avec id 作为参数的函数。