【发布时间】:2020-11-26 03:22:57
【问题描述】:
我将图像路径数据从父组件(TaskSubmissions.js 组件)发送到子组件(Card.js 组件)和相同的图像路径数据我想传递 Card 的子组件 CardDetail.js。
问题是数据从 TaskSubmissions.js 传递到 Card.js,但它没有从 Card.js 传递到 DetailCard.js
我正在使用 react-router-dom 。为了更好地理解它,我将分享所有三个组件代码。我会感谢你的帮助。 P.S 我是新来的反应,并试图通过这些实验来理解流程。
数据流 = 图片 URL 正在从 TaskSubmission.js 传递到 -> Card.js 到 -> DetailCard.js
父组件TaskSubmissions.js
import React from "react";
import Card from "../components/Card";
const TaskSubmissions = () => {
return (
<div className="container-fluid">
<div className="row justify-content-center mt-5">
<h1 className="text-info display-4 text-center">
Review All Students Task!
</h1>
</div>
<div className="row justify-content-center">
<p className="lead text-center">Rate your students performance</p>
</div>
<div className="row justify-content-center mt-5">
<div className="col-lg-3 col-md-4 col-sm-12">
<Card
name="Jane"
path="https://source.unsplash.com/aob0ukAYfuI/400x300"
/>
</div>
</div>
</div>
);
};
export default TaskSubmissions;
子组件Card.js
import React from "react";
import { Link } from "react-router-dom";
const Card = (props) => {
return (
<div className="container-fluid">
<div className="row">
<h4 className="card-title">{props.name}</h4>
<Link
to={{
pathname: "/detail",
state: { imgpath: props.path, name: props.name },
}}
className="d-block mb-4 h-100"
>
<img
className="img-fluid img-thumbnail"
src={props.path}
alt="image"
/>
</Link>
</div>
</div>
);
};
export default Card;
GrandChild 组件 CardDetail.js
import React from "react";
import { useLocation } from "react-router";
const CardDetail = (props) => {
const data = useLocation();
return (
<div className="container-fluid">
<div className="row justify-content-center">
<div className="card mb-3">
<img src={data.imgpath} className="card-img-top" alt="..." />
<div className="card-body">
<h5 className="card-title">{data.name}</h5>
<p className="card-text">Assignment 1 is completed.</p>
<p className="card-text">
<small className="text-muted">Last updated 3 mins ago</small>
</p>
</div>
</div>
</div>
</div>
);
};
export default CardDetail;
【问题讨论】:
-
我看不到您在
Card中使用CardDetail???在CardDetail中也没有使用props... -
正如您在 Card 中看到的
<Link to={{pathname: "/detail">,它的目标是 CardDetail。我为此在 App.js 组件中创建了一个路由路径 -
您可以根据需要在 url 查询中添加一些数据,如果您只是尝试将链接 url 传递给 CardDetail -> reactrouter.com/web/example/query-parameters,这可能是最好的方法
-
@user9824674 那么
CardDetail不是Card的孩子。在设置路由时,您可以根据 url 中的 id 将参数传递给它。 (*.com/questions/51226685/…) -
@user9824674 没问题,为什么我觉得它已经回答了?哦,我找到了……上面是一些 cmets,开头是:
then CardDetail is not the child of Card. in setting up routes, you can pass params to it, based on the id in url
标签: javascript reactjs react-native react-redux react-router