我在一个对象中有一个ojbect,我想提取子对象来映射它,但在数据到达之前,组件已经被读取

主对象名为Movie,子对象名为Categories

我想绘制Categories张 map ,但上面写着"未找到".

import Card from '../UI/Card';
import classes from './MovieDetails.module.css';
import MovieCategoris from './MovieCategories';
import ReactPlayerProps from "react-player";

const MovieDetails = (props) => {

    const Movie = props.Movie
    const image = Movie.Image;
    const Categories = Movie.Categories
    const videoSrc = Movie.Video;

    return (
        <Card>
            <div className={classes.VideoPlayer}>
                <ReactPlayerProps
                    controls
                    volume={1}
                    muted={false}
                    width={"100%"}
                    height={"100%"}
                    url={videoSrc}

                />
            </div>
            <div className={classes.DetailsBox}>
                <div className={classes.Details}>
                    <div className={classes.Title}>
                        <img src={image} />
                    </div>
                    <div className={classes.MovDet}>
                        <h3>{Movie.Title}</h3>
                        <ul>
                            <li>Duration: <label>{Movie.Duration}</label></li>
                            <li>Quality: <label>HD 720</label></li>
                            <li>release date: <label>{Movie.Year}</label></li>
                            <li>IMBb: <label>{Movie.Rate}</label></li>
                        </ul>
                        <h5>Categories</h5>
                        {/* <div>
                            <ul className={classes.Cat_li}>
                                {Categories.map((cat) =>
                                    <li>{cat}</li>
                                )}
                            </ul>
                        </div> */}
                    </div>
                    <div className={classes.Desc}>
                        <p> {Movie.Description} </p>
                    </div>
                </div>
            </div>
        </Card>
    )
}
export default MovieDetails;

这是一个获取api数据并使用props 将其转发到组件的函数.

import MovieDetails from "../components/Content/MovieDetails";
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
import FetchedMovie from '../Hooks/fetchSingleMovie'

const MovieDetailsPage = () => {
    const [MovieData, setMovieData] = useState([])
    const MovieId = useParams()
    async function Movie(MovieId) {
        const id = MovieId.movie
        const result = await FetchedMovie(id)
        setMovieData(result)
        return result
    }

    useEffect(() => {
        Movie(MovieId)
    }, [])
    return <MovieDetails Movie={MovieData} />
}

export default MovieDetailsPage;

this is the object i have on the api sever

推荐答案

这是因为你需要在MovieDetailsPage中的MovieDetails组件中传递一个空数组

当数据准备就绪时,可以渲染电影细节

试着用这样的方式来改变它

import MovieDetails from "../components/Content/MovieDetails";
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
import FetchedMovie from '../Hooks/fetchSingleMovie'

const MovieDetailsPage = () => {
    const [MovieData, setMovieData] = useState(null)
    const MovieId = useParams()
    async function Movie(MovieId) {
        const id = MovieId.movie
        const result = await FetchedMovie(id)
        setMovieData(result)
        return result
    }

    useEffect(() => {
        Movie(MovieId)
    }, [])
    return MovieData && <MovieDetails Movie={MovieData} />
}

export default MovieDetailsPage;

Javascript相关问答推荐

为什么这个自定义组件会被放置在TR之外?

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

拖放仅通过 Select 上传

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

如何在mongoose中链接两个模型?

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

如何从URL获取令牌?

查找最长的子序列-无法重置数组

使用JQuery单击元素从新弹出窗口获取值

JSDoc创建并从另一个文件导入类型

如何控制Reaction路由加载器中的错误状态?

使用js构造一个html<;ath&>元素并不能使其正确呈现

从另一个数组中的对应行/键值对更新数组中的键值对对象

有效路径同时显示有效路径组件和不存在的路径组件

如果一个字符串前面有点、空格或无字符串,后面有空格、连字符或无字符串,则匹配正则表达式

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

如何在一个对象Java脚本中获取不同键的重复值?

P5JS-绘制不重叠的圆

将Singleton实例设置为未定义后的Angular 变量引用持久性行为